Giter Site home page Giter Site logo

slashdotdash / jekyll-lunr-js-search Goto Github PK

View Code? Open in Web Editor NEW
549.0 17.0 105.0 520 KB

[UNSUPPORTED] Jekyll + lunr.js = static websites with powerful full-text search using JavaScript

License: MIT License

Ruby 4.86% JavaScript 95.14%
jekyll search lunr static-site-generator

jekyll-lunr-js-search's Introduction

Jekyll + lunr.js = Static websites with powerful full-text search using JavaScript

Use lunr.js to provide simple full-text search, using JavaScript in your browser, for your Jekyll static website.

Inspired by Pascal Widdershoven's Jekyll + indextank and Michael Levin's Sitemap.xml Generator plugins.

This Jekyll plugin handles the generation of a lunr.js compatible .json index file. Runtime search configuration is provided by a simple jQuery plugin.

It allows full-text search of all your Jekyll pages and posts. Executed by the client without any server-side processing (outside of serving static files).

How to use

1. Install the plugin

Choose to install as either a Ruby Gem, or by copying the pre-built plugin file to your Jekyll site.

1a. Install as a Ruby Gem

  1. Install the jekyll-lunr-js-search Ruby Gem.

     gem install jekyll-lunr-js-search
    
  2. Modify your Jekyll _config.yml file to include the Gem.

     gems: ['jekyll-lunr-js-search']
    

1b. Install by copying the plugin to your Jekyll site.

  1. Place build/jekyll_lunr_js_search.rb inside the _plugins folder in the root of your Jekyll site.

The content from all Jekyll posts and pages will be indexed to a js/index.json file ready for lunr.js to consume. This happens each time the site is generated.

A jQuery plugin is provided in js/jquery.lunr.search.js to handle the configuration of lunr.js with the search index JSON data generated by this plugin.

Dependencies for the jQuery plugin are as follows.

A pre-built version of the jQuery plugin, along with all of the above dependencies, concatenated and minified is available from at build/search.min.js.

2. Copy the jQuery plugin and add a script reference.

2a. Using the pre-built, minified plugin from the gem.

The plugin will automatically add the minified JavaScript file js/search.min.js to your _site.

To use it, you must add a script reference to the bottom of your nominated search page.

    <script src="/js/search.min.js" type="text/javascript" charset="utf-8"></script>

2b. Using the jQuery plugin and managing its dependencies yourself.

  1. Copy js/jquery.lunr.search.js to your Jekyll site's JavaScript directory.

  2. Add a script reference to the bottom of your nominated search page for jquery.lunr.search.js and each of the dependencies outlined above.

     <script src="/js/jquery-1.9.1.min.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/lunr.min.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/mustache.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/date.format.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/URI.min.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/jquery.lunr.search.js" type="text/javascript" charset="utf-8"></script>
    

Make sure you use the same version of lunr.js as the gem. The Jekyll log output includes the version used.

Ideally you would concatenate, minify and optimise these six .js files using uglify/Google closure/etc to produce a single search.min.js file to reference (or use the pre-built script as described in 2a above).

<script src="/js/search.min.js" type="text/javascript" charset="utf-8"></script>

4. Add a search form with a query input as shown.

<form action="/search" method="get">
  <input type="text" id="search-query" name="q" placeholder="Search" autocomplete="off">
</form>

Search happens as you type, once at least three characters have been entered.

Providing the form action and specifying the get method allows the user to hit return/enter to also submit the search. Amend the form's action URL as necessary for the search page on your own site.

5. Add an element to contain the list of search result entries.

<section id="search-results" style="display: none;"> </section>

This may be initially hidden as the plugin will show the element when searching.

6. Create a Mustache template to display the search results.

{% raw %}
<script id="search-results-template" type="text/mustache">
  {{#entries}}
    <article>
      <h3>
        {{#date}}<small><time datetime="{{pubdate}}" pubdate>{{displaydate}}</time></small>{{/date}}
        <a href="{{url}}">{{title}}</a>
      </h3>
      {{#is_post}}
      <ul>
        {{#tags}}<li>{{.}} </li>{{/tags}}
      </ul>
      {{/is_post}}
    </article>
  {{/entries}}
</script>
{% endraw %}

Note the use of {% raw %} and {% endraw %} to ensure the Mustache tags are not stripped out by Jekyll.

The fields available to display are as follows.

entries

List of search result entries (mandatory).

date

Raw published date for posts, or null for pages. Can be used to toggle display of the following dates in the template {{#date}}has a date{{/date}} {{#!date}}no date{{/date}}.

pubdate

Post published date, formatted as 'yyyy-mm-dd', to be used in a html5 <time datetime="{{pubdate}}"> element (posts only).

displaydate

Post published date, formatted as 'mmm dd, yyyy', such as Oct 12, 2012 (posts only)

title

Title of the Jekyll page or post.

url

URL of the Jekyll page or post that can be used to create a hyperlink <a href="{{url}}">{{title}}</a>.

categories

Categories (array) of the Jekyll page or post, can be used in a loop {{#categories}}{{.}} {{/categories}} to list them.

tags

Tags (array) of the Jekyll page or post, can be used in a loop {{#tags}}{{.}} {{/tags}} to list them.

is_post

Booelan value, true if current result element is a post. Can be used to toggle display of specific elements in the template {{#is_post}}is a post{{/is_post}}

7. Configure the jQuery plugin for the search input field.

<script type="text/javascript">
  $(function() {
    $('#search-query').lunrSearch({
      indexUrl  : '/js/index.json',           // url for the .json file containing search index data
      results   : '#search-results',          // selector for containing search results element
      template  : '#search-results-template', // selector for Mustache.js template
      titleMsg  : '<h1>Search results<h1>',   // message attached in front of results (can be empty)
      emptyMsg  : '<p>Nothing found.</p>'     // shown message if search returns no results
    });
  });
</script>

8. To exclude pages from the search index.

Add the following exclude_from_search setting to any page's YAML config.

exclude_from_search: true

Or add an array of exclusions (as individual regular expressions) to the site's _config.yml file.

lunr_search:
  excludes: [rss.xml, atom.xml]

9. Stop Words

You can also configure a stopwords file, and a minimum length of word to be included in the index file. This can be done by adding a search block to _config.yml. The default values are:

lunr_search:
  stopwords: "stopwords.txt"
  min_length: 3

The stopwords file must consist of one word per line, in lowercase, without punctuation.

10. Alternate data directory

You can choose to store index.json, search.min.js and lunr.min.js in a different directory like this:

lunr_search:
  js_dir: "javascript"

Demo

Search plugin is deployed to 10consulting.com/search. Some example search queries are /search/?q=git, /search/?q=cqrs.

It also features on-demand loading of the search plugin .js when focusing into the search field on the homepage. Look at the browser network requests clicking into the search input.

Building

To build the single jekyll_lunr_js_search.rb plugin file.

Requirements

Install Bundler and then run the following.

bundle install

Install Bower.

To build the plugin.

rake build

Then copy build/jekyll_lunr_js_search.rb to your Jekyll site's _plugins folder and the build/*.min.js files to your site's js folder.

If you include the .js and .js.map files your browser developer console will link to the unminified code.

jekyll-lunr-js-search's People

Contributors

anthonygore avatar dauryg avatar hydra1983 avatar iangilman avatar jphastings avatar ksilin avatar marcqualie avatar redconfetti avatar rodrigopavezi avatar simonellistonball avatar slashdotdash avatar tilmans avatar tonyroberts avatar ys avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jekyll-lunr-js-search's Issues

Latest code throws Error: undefined local variable or method `__dir__'

Hi

I just pulled down the latest code from the repo and Jekyll is refusing to build, saying:

jekyll 2.5.2 | Error:  undefined local variable or method `__dir__' for #<Jekyll::LunrJsSearch::Indexer:0x007fe898899710 @js_dir="js">

which I'm finding a little odd! ;) All was working fine, I updated my bundle and installed libv8 OK, not sure where to start looking for a solution to this.

plugin throwing layout errors in Jekyll 2.2.0

Now that Jekyll returns errors for any missing layouts, jekyll-lunr.js seems to be returning them for every page its indexing.

Things build fine, but i'd like to not see a list of warnings for every build.

is there some way to turn these off/hide them/fix this?

Thanks.

jekyll build error

hi,can you please help,when i want use this plugin i got this error:
image
i puted this plugin under ./_plugins/

Error: " Build Warning: Layout 'default' requested in ... does not exist."

When I build my site, I'm getting all kinds of warning errors about default.html layout not found:

 Generating...
              Lunr: Creating search index...
     Build Warning: Layout 'default' requested in content/adtruth/archive.html does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/archive_getting_started.html does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/demo.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/demo_environment.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/faqs.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/hello_world.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/identifiers.md does not exist.
     Build Warning: Layout 'default' requested in index.html does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/make_requests.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/matchdevice.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/overview.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/questions.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/release_notes.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/rulesets.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/sample_scenario.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/scrollspy.md does not exist.
     Build Warning: Layout 'default' requested in search.html does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/troubleshooting_hmac.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/use_cases.md does not exist.
     Build Warning: Layout 'default' requested in content/adtruth/windows.md does not exist.
     Build Warning: Layout 'post' requested in _posts/2014-06-28-example-bootstrap.md does not exist.
     Build Warning: Layout 'post' requested in _posts/2014-07-27-exmaple-css.md does not exist.
     Build Warning: Layout 'post' requested in _posts/2014-07-28-introducing-shiori.md does not exist.
              Lunr: Index ready (lunr.js v0.4.5)

Removing the search plugin made these errors go away. Do you know why the errors are happening? They didn't occur in my plain, simple search integration site.

Disable search indexing via cmd line flag

When developing new content, waiting for the site to index after a file save is the largest delay.

It would be preferable to pass a flag to jekyll when running locally to temporarily disable the indexing. One great option would be:

jekyll serve --no-index

however this may not be possible. Alternativelly, create a _disable_search.yml config file containing:

jekyll-lunr-js-search: disable

and start jekyll with:

jekyll serve --config _config.yml _disable_search.yml

This, however, requires that jekyll-lunr-js-search detects and honours the jekyll-lunr-js-search: disable yml variable.

Flag for turning off search index building on jekyll build

I'm finding that the index process is taking quite a long time and when I run jekyll serve --watch I've been commenting out everything in jekyll_lunr_js_search.rb.

I'm just wondering if there's a better workflow possible for this.

Do you think there would be any way to split the index builder off into a grunt task or something so that I could iterate without building an index and then buildit before a commit or push?

jekyll_lunr_js_search.rb:16:in `merge!': no implicit conversion of nil into Hash (TypeError)

I get the following error trying to start jekyll serve after following all instructions in your README:

% jekyll serve --trace
Configuration file: /my_jekyll/_config.yml
/my_jekyll/_plugins/jekyll_lunr_js_search.rb:16:in `merge!': no implicit conversion of nil into Hash (TypeError)
  from /my_jekyll/_plugins/jekyll_lunr_js_search.rb:16:in `initialize'
  from /Users/me/.rvm/gems/ruby-2.0.0-p353/gems/jekyll-1.4.3/lib/jekyll/site.rb:354:in `new'

nesting of 101 is too deep

The creation of the lunr index fails with the following error: nesting of 101 is too deep

$ jekyll b
Configuration file: /www/dev-jekyll/_config.yml
            Source: /www/dev-jekyll
       Destination: /www/dev-jekyll/_site
      Generating... 
              Lunr: Creating search index...
jekyll 2.5.3 | Error:  nesting of 101 is too deep

Ruby version: 1.9.3p484
Jekyll version: 2.5.3
jekyll-lunr-js-search version: 0.2.1 (installed via gem)

Smart quotes break indexing?

Hey... I apologize in advance if this is not an issue with the plugin itself. Unfortunately I'm new to Jekyll and have never used lunr before, so not sure where to look.

I've implemented the plugin as per the instructions, but when I load the page, I get an error as follows (see https://www.dropbox.com/s/zx2311wc7aqp6vv/Screenshot%202014-07-26%2010.12.39.png).

Upon looking at my search.json file, I see that I have smart quotes in the text. Browsing directly to the JSON file in Chrome, I see https://www.dropbox.com/s/s3uwb6oafrqlevt/Screenshot%202014-07-26%2010.15.07.png

Is it safe to assume that these characters are causing the JS error on the search page?

I have a very basic _config.yml. Nothing specified for markdown at all, so I'm using whatever is the default. I've searched for a way to turn smart quotes off, but can't seem to find what I need. Before I continue to invest time in trying to figure that out, I thought I'd ask if others who are smarter than me might know whether or not that's even my problem?

Even if the pages/posts are rendered with smart quotes, is there a way to generate the search.json without?

If any additional info is needed, I'm happy to provide.

Thanks!
Charlie

New Jekyll install, throwing error "can't find variable: $" when parsing for search results

I'm relatively new to Jekyll and git so apologies if this is a dumb question. I have a new Jekyll install (which works) and was trying to integrate search on my site. Frustrated with some of the other options I'm trying this out on a local copy of my site and am unable to get search results. Safari throws one error:

[Error] ReferenceError: Can't find variable: $
global code (search, line 90)

which when followed leads to the first line of the example to include in the page source:

<script type="text/javascript">
$(function() {

Everything else appears to be working, the JSON file is built and appears correct, etc. I tried on my site (copy), and then on a new, default Jekyll site with both the gem and installing the files manually (all dependencies in js folder and appropriate calls in the html) and I keep getting the same error. To make things easy for testing I was using the examples as written in the Readme and which work on the The Binary Blog search page (linked from Readme). I am getting the "missing" layout messages mentioned in another issue, but no other flags/warnings from Jekyll and the site compiles and displays fine - search results just don't work.

EDIT: I tried it with the latest versions of all js, and then after reading other issues I tried with Lunr 0.4.5 and jQuery 1.9.1, but I get the same error.

Any ideas?

Don't search if input value hasn't changed

Right now, LunrSearch.prototype.bindKeypress does a search no matter whether the input value has changed or not. This has caused problems for me while I'm trying to build key handling into my search box, since every time you hit the arrow key, it redoes the search and rebuilds the results (even though nothing has actually changed).

To get around it, I modified bindKeypress like so:

    LunrSearch.prototype.bindKeypress = function() {
      var self = this;

      var handler = debounce(function(event) {
        self.search($(event.target).val());
      });

      this.$elem.bind('keyup', function(event) {
        if (!event.isDefaultPrevented()) {
          handler(event);
        }
      });
    };

...but a more robust solution would be to keep track of the previous search state and abort the search if it's the same.

Can not install the plugin as a gem

Hi there,
I'm having some trouble installing the plugin as a gem.

I've done the following steps: 1a, 2a, 4, 5, 6, 7. But when I build the site I get the following error:

Malahovas-MacBook-Pro:iloveip Svetlana$ rake
Configuration file: /Users/Svetlana/Desktop/iloveip/_config.yml
/Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:29:in `require': cannot load such file -- jekyll-lunr-js-search (LoadError)
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:29:in `block in require_gems'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:26:in `each'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:26:in `require_gems'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:19:in `conscientious_require'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/site.rb:79:in `setup'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/site.rb:41:in `initialize'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:29:in `new'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:29:in `process'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/lib/jekyll/commands/serve.rb:26:in `block (2 levels) in init_with_program'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/mercenary-0.3.3/lib/mercenary/command.rb:220:in `call'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/mercenary-0.3.3/lib/mercenary/command.rb:220:in `block in execute'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/mercenary-0.3.3/lib/mercenary/command.rb:220:in `each'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/mercenary-0.3.3/lib/mercenary/command.rb:220:in `execute'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/mercenary-0.3.3/lib/mercenary/program.rb:35:in `go'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/mercenary-0.3.3/lib/mercenary.rb:22:in `program'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/gems/jekyll-2.5.3/bin/jekyll:20:in `<top (required)>'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/bin/jekyll:23:in `load'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/bin/jekyll:23:in `<main>'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/bin/ruby_executable_hooks:15:in `eval'
    from /Users/Svetlana/.rvm/gems/ruby-2.0.0-p451/bin/ruby_executable_hooks:15:in `<main>'
Malahovas-MacBook-Pro:iloveip Svetlana$

What else do I need to do in order for this plugin to work?

small error in readme

The Readme states that the index path option is "index" - should be "indexUrl":

$('#search-query').lunrSearch({
  index:    '/search.json',             // URL of the `search.json` index data for your site
  ^^^ this should be indexUrl
  results:  '#search-results',          // jQuery selector for the search results container
  entries:  '.entries',                 // jQuery selector for the element to contain the results list, must be a child of the results element above.
  template: '#search-results-template'  // jQuery selector for the Mustache.js template
});

Cannot run site with pliugins

This is what I get

2013-07-22_15-16-34

At first I could not instal nokogiri it required ruby 1.6.3. I installed rvm and updated ruby. Then I installed nokogiri but I still cannot launch my site with your plugin.

search not working

HI

I installed the Gem.

My search page is /search/index.html

layout: page
title: Search - Ranger Rom
keywords: Search wildlife - games - blog posts

description: Search page for Rangerrom.com and blog posts.

<script src="/js/search.min.js" type="text/javascript" charset="utf-8"></script>

_config.yml
gems: ['jekyll-lunr-js-search']

Gemfile
gem 'jekyll-lunr-js-search'

When I run Jekyll build, I see three files
/js/index.json
/lunr.min.js
/search.min.js

I also have a search result on my home page:
index.html

However, when I type in the form, I get no result. I see a network issue (logged a separate issue). However, I also notice the .js files generated does not include the mustache template.

Here is my files on gist. I am not sure what exactly I am doing wrong, probably missed something somewhere.

https://gist.github.com/Romiko/f22274490b56bf1bffa3

not support multi-language

Hi,now this plugin not support chinese search,i was wondering if there is a way to support multiple language searching..

search.js.map

Hi,

I am using the gem install version (Not using Bower). I notice the search page has the following network request which does not exist, any ideas why? This happens on my search page via the script

<script src="/js/search.min.js" type="text/javascript" charset="utf-8"></script>

Request URL:http://localhost:4000/js/search.js.map
Request Method:GET
Status Code:404 Not Found
Request Headersview source
Accept:/
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:localhost:4000
Referer:http://localhost:4000/search/index.html?q=buffalo

Method to add new search criteria?

Hi,

I have the plugin up and running successfully (works great), but I'd like to add the author of each post as a search (and display) option, if possible. I've tried my best guess at how this might work, but I'm getting this error on build:

  undefined method `author' for <Post:

Is there any way to add new search criteria to the JSON file? Thanks.

LoadError when trying to build: jekyll_lunr_js_search.rb:5:in `require': cannot load such file

I've just set up a new non-Github Jekyll (v2.5.3) blog and get this error while build when adding the gem to my _plugins directory.

I didn't proceed to any of the steps in the installation documents since I wanted to check first if the plugins throws up any errors… well, it did:

Warning: Command failed: /Users/pat/Sites/ubc.com/_src/_plugins/jekyll_lunr_js_search.rb:5:in `require': cannot load such file -- v8 (LoadError)
    from /Users/pat/Sites/ubc.com/_src/_plugins/jekyll_lunr_js_search.rb:5:in `<top (required)>'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:74:in `require'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:74:in `block (2 levels) in require_plugin_files'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:73:in `each'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:73:in `block in require_plugin_files'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:72:in `each'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:72:in `require_plugin_files'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:18:in `conscientious_require'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/site.rb:79:in `setup'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/site.rb:41:in `initialize'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:29:in `new'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:29:in `process'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:18:in `block (2 levels) in init_with_program'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `call'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `block in execute'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `each'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `execute'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/mercenary-0.3.5/lib/mercenary/program.rb:42:in `go'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/mercenary-0.3.5/lib/mercenary.rb:19:in `program'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/gems/jekyll-2.5.3/bin/jekyll:20:in `<top (required)>'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/bin/jekyll:23:in `load'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/bin/jekyll:23:in `<main>'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/bin/ruby_executable_hooks:15:in `eval'
    from /Users/pat/.rvm/gems/ruby-2.1.0@derubercast/bin/ruby_executable_hooks:15:in `<main>'

I also tried to install the gem instead of the plugin and also checked if the previous works via gem install jekyll-lunr-js-search -v 0.1.1 but both threw up the same error.

Search not working with Github pages

When I'm serving my site locally, search works perfectly. When I deploy it to Github Pages, it no longer works. This is the compiled search page, and this is the generated json file.

Searching content linked from _data files

I have all my author information save in an external _data file call authors. When the indexer runs, I get JSON entry that looks like this:

{"title":"Filthy Gorgeous: The Bob Guccione Story","url":"/content/2014/03/18/filthy-gorgeous-the-bob-guccione-story.html","date":"2014-03-18 00:00:00 -0400","categories":["reviews","current-releases"],"tags":["Bob Guccione","documentary","Letters","omni","penthouse"],"image":"filthy-gorgeous-the-bob-guccione-story.jpg",author:{"name":"Casey Tourangeau","email":"[email protected]","twitter":"RolloTomasi73","image":"casey.jpg"},,"addressee":"Michael Perlmutter","position":"Music Supervisor"}

As you can see, the author information is nest within the entry; it's linked form a _data file authors.yml.

I'm pretty new to all of this, and I'm wondering if there's any way to search the author name. nested within the entry as it is. I've ben able to pull the author name into the search results by referencing 'author.name' in the raw code, but I can't seem to figure out how to add that name to what's actually searched.

Any help would be great, Thanks!

Stop words by languages ?

  1. Does this plugin use a stop words by languages?
  2. For a multilingual site, does it index all words in one "huge" file or in many files (one by language)?

TypeError: this.template is not a function

Hello,

I'm facing a problem that I can't solve.
When entering a word to search (that is valid), Firebug throws an error that is

TypeError: this.template is not a function

The error is related this sentence of jquery.lunr.search.js

$entries.append(this.template({entries: entries}));

Any ideas to handle this?

Notes:
The search.json file is well loaded and no error when building the site with jekyll.
When the searched word is not valid then I can see "Nothing found".

TypeError: 'undefined' is not a function (evaluating '$('#search-query').lunrSearch')

Hi,

I am running Safari and I get the following error when running search:

TypeError: 'undefined' is not a function (evaluating '$('#search-query').lunrSearch')
(anonymous function) blog:205
search.min.js: 24:22170
fireWith search.min.js:24:44978
ready search.min.js:24:24811
s search.min.js:14:1228

Any clue on how I could solve this problem?
Best.

Spaces causing issue when searching categories

Hi,

One of the fields I've set up jekyll-lunr-js-search to search is my categories, which are returned in the .json file as this:

"categories":{"Item One","Item Two"}

If I search on the firs word of either bit of text (the "Item" word in the above example), I have search results returned. However, if I search on anything after a space ("One", "Two"), I get no results.

Is there any way to have all the text searched?

Thanks.

errors with gems in installing -- "`require': cannot load such file -- jekyll-lunr-js-search (LoadError)"

When I try to install this plugin using the gem method, I get this error:

^Ctjohnson-mbpr13:resolve tjohnson$ gem install jekyll-lunr-js-search
Successfully installed jekyll-lunr-js-search-0.2.1
Parsing documentation for jekyll-lunr-js-search-0.2.1
1 gem installed
tjohnson-mbpr13:resolve tjohnson$ jekyll serve
Configuration file: /Users/tjohnson/projects/resolve/_config.yml
/Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:29:in `require': cannot load such file -- jekyll-lunr-js-search (LoadError)
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:29:in `block in require_gems'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:26:in `each'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:26:in `require_gems'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/plugin_manager.rb:19:in `conscientious_require'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/site.rb:79:in `setup'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/site.rb:41:in `initialize'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:29:in `new'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:29:in `process'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/lib/jekyll/commands/serve.rb:26:in `block (2 levels) in init_with_program'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `call'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `block in execute'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `each'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `execute'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/program.rb:42:in `go'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary.rb:19:in `program'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.5.3/bin/jekyll:20:in `<top (required)>'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/jekyll:23:in `load'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/jekyll:23:in `<main>'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/ruby_executable_hooks:15:in `eval'
    from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/ruby_executable_hooks:15:in `<main>'

I'm not if there are certain dependencies required that I don't have?

Instructions could use some more detail

I'm somewhat new to Jekyll and had trouble with the instructions. I think it would be better to clearly separate out the content into three distinct sections:

  • Installing lunr search using the pre-built plugin method
  • Installing lunr search using the rubygem method
  • Building the plugin for development purposes

Some other questions I had:

  • why wouldn't I want to use simple.min.js instead of integrating all the libraries directly? the instructions seemed to minimize that option, adding it almost as a footnote.
  • what is a search nominated page? can i just integrate it into the header of my default layout?
  • where does the mustache template go?
  • is jquery.lunr.search.js included in simple.min.js or separate?

I would be happy to help revise the instructions to make them clearer, especially providing an instruction from a viewpoint of someone who is more new to Jekyll, but I can't get the plugin working myself. Can you help me?

Where is the Hash method defined?

I installed this plugin on a Jekyll site, got below error on jekyll build:

.../_plugins/jekyll_lunr_js_search.rb:16:in `initialize': undefined method `Hash' for #<Jekyll::Indexer:0x38b22e8> (NoMethodError)

I'm new to Ruby and Jekyll. Can't figure out where is the Hash method defined.

Tag search

I'm trying to implement a tag based search, similar to Google's site based search (site:foo.bar baz) to use on my own website. Since I'm not a web developer by trade I'm not too sure where to add the additional checks. I assume it is the search function in jquery.lunr.search.js. Is this correct or am I missing something? Is there a better place to add my checks?

error on build?

This looks like a great plugin, thanks for sharing.

Probably missing something simple here, but after following your directions I get the following error on build:

jekyll --server
Configuration from /home/cboettig/Documents/labnotebook/_config.yml
Building site: /home/cboettig/Documents/labnotebook -> /home/cboettig/Documents/labnotebook/_site
Running the search indexer...
/home/cboettig/Documents/labnotebook/_plugins/jekyll_lunr_js_search.rb:24:in `generate': undefined method `each' for nil:NilClass (NoMethodError)
    from /var/lib/gems/1.9.1/gems/jekyll-0.12.1/lib/jekyll/site.rb:190:in `block in generate'
    from /var/lib/gems/1.9.1/gems/jekyll-0.12.1/lib/jekyll/site.rb:189:in `each'
    from /var/lib/gems/1.9.1/gems/jekyll-0.12.1/lib/jekyll/site.rb:189:in `generate'
    from /var/lib/gems/1.9.1/gems/jekyll-0.12.1/lib/jekyll/site.rb:40:in `process'
    from /var/lib/gems/1.9.1/gems/jekyll-0.12.1/bin/jekyll:264:in `<top (required)>'
    from /usr/local/bin/jekyll:23:in `load'
    from /usr/local/bin/jekyll:23:in `<main>'

If you care to have a look, my instance with your search mechanism enabled is on this branch here: https://github.com/cboettig/labnotebook/tree/site-search

(note that on that branch your search method is just implemented on the search.html page, the search in the navbar uses my former local search, adapted from marran)

Exclude "stop" words from generated search index json file

No point in including the stop words in the index when they will be simply excluded by lunr.js anyway.

Enhancement to reduce index size and improve performance.

Downside is that stop words are language specific, so will be English only.

Search Only Finds Words in Title and Post Body, Not Categories

The .json file is rendering everything correctly, but the search will not find words in categories and does not see post dates. It does see title and body content however. Is this how the search is built? If not, what could be disallowing the search to parse through categories?

Search results are not sorted

I am using jekyll-lunr-js-search on my Jekyll test site:

blog.hazenet.dk

But the search results are not sorted in any meaningful way.
I have changed the "displaydate" return format in the search.min.js file.

If I search for update, the results are:

03 April 2014 · You're up and running!
03 March 2014 · Hello What Ever 2014
03 March 2015 · You good to go
03 March 2013 · Hello What Ever 2013
03 March 2015 · Hello What Ever 2015

The same issue is also seen on the "official" demo site:

10consulting.com/search

I would actually like to sort on the "pubdate" string, but display the "displaydate" string.

Mac OS Yosemite

Hi,

I am havign an issue with Yosemite. I use rbenv for ruby versions.

I installed the gem then updated my Gemfile and _Config.yml. However when I run bundle i get this error:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

/Users/romikoderbynew/.rbenv/versions/2.1.3/bin/ruby extconf.rb 

checking if the C compiler accepts ... yes
checking if the C compiler accepts -Wno-error=unused-command-line-argument-hard-error-in-future... no
Building nokogiri using packaged libraries.
checking for iconv... yes


IMPORTANT NOTICE:

Buidling Nokogiri with a packaged version of libxml2-2.9.2
with the following patches applied:
- 0001-Revert-Missing-initialization-for-the-catalog-module.patch
- 0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch

Team Nokogiri will keep on doing their best to provide security
updates in a timely manner, but if this is a concern for you and want
to use the system library instead; abort this installation process and
reinstall nokogiri as follows:

gem install nokogiri -- --use-system-libraries
    [--with-xml2-config=/path/to/xml2-config]
    [--with-xslt-config=/path/to/xslt-config]

If you are using Bundler, tell it to use the option:

bundle config build.nokogiri --use-system-libraries
bundle install

Note, however, that nokogiri is not fully compatible with arbitrary
versions of libxml2 provided by OS/package vendors.


Extracting libxml2-2.9.2.tar.gz into tmp/x86_64-apple-darwin14.0.0/ports/libxml2/2.9.2... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxml2/0001-Revert-Missing-initialization-for-the-catalog-module.patch...
Running 'patch' for libxml2 2.9.2... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxml2/0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch...
Running 'patch' for libxml2 2.9.2... OK
Running 'configure' for libxml2 2.9.2... OK
Running 'compile' for libxml2 2.9.2... OK
Running 'install' for libxml2 2.9.2... OK
Activating libxml2 2.9.2 (from /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/x86_64-apple-darwin14.0.0/libxml2/2.9.2)...


IMPORTANT NOTICE:

Buidling Nokogiri with a packaged version of libxslt-1.1.28
with the following patches applied:
- 0001-Adding-doc-update-related-to-1.1.28.patch
- 0002-Fix-a-couple-of-places-where-f-printf-parameters-wer.patch
- 0003-Initialize-pseudo-random-number-generator-with-curre.patch
- 0004-EXSLT-function-str-replace-is-broken-as-is.patch
- 0006-Fix-str-padding-to-work-with-UTF-8-strings.patch
- 0007-Separate-function-for-predicate-matching-in-patterns.patch
- 0008-Fix-direct-pattern-matching.patch
- 0009-Fix-certain-patterns-with-predicates.patch
- 0010-Fix-handling-of-UTF-8-strings-in-EXSLT-crypto-module.patch
- 0013-Memory-leak-in-xsltCompileIdKeyPattern-error-path.patch
- 0014-Fix-for-bug-436589.patch
- 0015-Fix-mkdir-for-mingw.patch

Team Nokogiri will keep on doing their best to provide security
updates in a timely manner, but if this is a concern for you and want
to use the system library instead; abort this installation process and
reinstall nokogiri as follows:

gem install nokogiri -- --use-system-libraries
    [--with-xml2-config=/path/to/xml2-config]
    [--with-xslt-config=/path/to/xslt-config]

If you are using Bundler, tell it to use the option:

bundle config build.nokogiri --use-system-libraries
bundle install

Extracting libxslt-1.1.28.tar.gz into tmp/x86_64-apple-darwin14.0.0/ports/libxslt/1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0001-Adding-doc-update-related-to-1.1.28.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0002-Fix-a-couple-of-places-where-f-printf-parameters-wer.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0003-Initialize-pseudo-random-number-generator-with-curre.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0004-EXSLT-function-str-replace-is-broken-as-is.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0006-Fix-str-padding-to-work-with-UTF-8-strings.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0007-Separate-function-for-predicate-matching-in-patterns.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0008-Fix-direct-pattern-matching.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0009-Fix-certain-patterns-with-predicates.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0010-Fix-handling-of-UTF-8-strings-in-EXSLT-crypto-module.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0013-Memory-leak-in-xsltCompileIdKeyPattern-error-path.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0014-Fix-for-bug-436589.patch...
Running 'patch' for libxslt 1.1.28... OK
Running patch with /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/patches/libxslt/0015-Fix-mkdir-for-mingw.patch...
Running 'patch' for libxslt 1.1.28... OK
Running 'configure' for libxslt 1.1.28... OK
Running 'compile' for libxslt 1.1.28... OK
Running 'install' for libxslt 1.1.28... OK
Activating libxslt 1.1.28 (from /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5/ports/x86_64-apple-darwin14.0.0/libxslt/1.1.28)...
checking for main() in -llzma... yes
checking for xmlParseDoc() in libxml/parser.h... no
checking for xmlParseDoc() in -lxml2... no

checking for xmlParseDoc() in -llibxml2... no

libxml2 is missing. Please locate mkmf.log to investigate how it is failing.

*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/romikoderbynew/.rbenv/versions/2.1.3/bin/ruby
--help
--clean
--use-system-libraries
--enable-static
--disable-static
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--enable-cross-build
--disable-cross-build
--with-xml2lib
--without-xml2lib
--with-libxml2lib
--without-libxml2lib

extconf failed, exit code 1

Gem files will remain installed in /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.5 for inspection.
Results logged to /Users/romikoderbynew/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/extensions/x86_64-darwin-14/2.1.0-static/nokogiri-1.6.5/gem_make.out
An error occurred while installing nokogiri (1.6.5), and Bundler cannot
continue.
Make sure that gem install nokogiri -v '1.6.5' succeeds before bundling.

I can manually instlal nokogiri, but via bundle it fails. Why?

New Jekyll Collections

Will this support Jekyll 2 Collections? They don't appear to be getting indexed, Posts and Pages show up just fine.

baseurl not honored in Mustache url variable

When setting a baseurl in _config.yml, the links that the Mustache template produces don't contain the baseurl prefix, and so fail. I think the url variable should contain the full url to the post or page, otherwise one would need to hardcode it in the Mustache template. I'm not sure if I'm missing something.

Cannot generate json index

I have been trying to implement search in a jekyll site, and I was hoping for a little guidance. These are probably very basic questions but I would really appreciate the help.

Is this the correct placement of the files?

_plugins
  |--build
    |--jekyll_lunr_js_search.rb
indexer.rb
page_renderer.rb
Rakefile
search_entry.rb
search_index_file.rb

When I run rake build, a build folder is generated at the site root level, and inside it is jekyll_lunr_js_search.rb, and no search.json is created.

I know I must be missing something simple, but any help is greatly appreciated.

can you provide a sample jekyll site with lunr search integrated?

Can you create a sample jekyll site with a plain integration of lunr search using the pre-built plugin method rather than the rubygem installation method? I had a hard time following the instructions but feel if i had example code, I could figure it out. If I could download the sample site, that would be perfect.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.