Commit 9cedfe2e95b675ac2872334802969ed600924d73
1 parent
33825cfb
Exists in
master
and in
21 other branches
Updated autocomplete to include instant search
Showing
1 changed file
with
14 additions
and
9 deletions
Show diff stats
README.md
... | ... | @@ -488,7 +488,7 @@ Reindex and search with: |
488 | 488 | Product.search "milk", boost_where: {orderer_ids: current_user.id} |
489 | 489 | ``` |
490 | 490 | |
491 | -### Autocomplete | |
491 | +### Instant Search / Autocomplete | |
492 | 492 | |
493 | 493 | Autocomplete predicts what a user will type, making the search experience faster and easier. |
494 | 494 | |
... | ... | @@ -499,15 +499,15 @@ Autocomplete predicts what a user will type, making the search experience faster |
499 | 499 | First, specify which fields use this feature. This is necessary since autocomplete can increase the index size significantly, but don’t worry - this gives you blazing faster queries. |
500 | 500 | |
501 | 501 | ```ruby |
502 | -class City < ActiveRecord::Base | |
503 | - searchkick match: :word_start | |
502 | +class Book < ActiveRecord::Base | |
503 | + searchkick match: :word_start, searchable: [:title, :author] | |
504 | 504 | end |
505 | 505 | ``` |
506 | 506 | |
507 | 507 | Reindex and search with: |
508 | 508 | |
509 | 509 | ```ruby |
510 | -City.search "san fr", fields: [:name] | |
510 | +Book.search "tipping poi" | |
511 | 511 | ``` |
512 | 512 | |
513 | 513 | Typically, you want to use a JavaScript library like [typeahead.js](http://twitter.github.io/typeahead.js/) or [jQuery UI](http://jqueryui.com/autocomplete/). |
... | ... | @@ -517,10 +517,15 @@ Typically, you want to use a JavaScript library like [typeahead.js](http://twitt |
517 | 517 | First, add a route and controller action. |
518 | 518 | |
519 | 519 | ```ruby |
520 | -# app/controllers/cities_controller.rb | |
521 | -class CitiesController < ApplicationController | |
520 | +# app/controllers/books_controller.rb | |
521 | +class BooksController < ApplicationController | |
522 | 522 | def autocomplete |
523 | - render json: City.search(params[:query], fields: [:name], limit: 10).map(&:name) | |
523 | + render json: Book.search(params[:query], { | |
524 | + fields: ["title^5", "author"], | |
525 | + limit: 10, | |
526 | + load: false, | |
527 | + misspellings: {below: 5} | |
528 | + }).map(&:name) | |
524 | 529 | end |
525 | 530 | end |
526 | 531 | ``` |
... | ... | @@ -534,8 +539,8 @@ Then add the search box and JavaScript code to a view. |
534 | 539 | <script src="typeahead.js"></script> |
535 | 540 | <script> |
536 | 541 | $("#query").typeahead({ |
537 | - name: "city", | |
538 | - remote: "/cities/autocomplete?query=%QUERY" | |
542 | + name: "book", | |
543 | + remote: "/books/autocomplete?query=%QUERY" | |
539 | 544 | }); |
540 | 545 | </script> |
541 | 546 | ``` | ... | ... |