Commit b5f09f1c9416da989987a69250dd72a190343eb9

Authored by Andrew Kane
1 parent c69cc0aa

Added emoji search

CHANGELOG.md
... ... @@ -3,6 +3,7 @@
3 3 - Added aggregations method to get raw response
4 4 - Use `execute: false` for lazy loading
5 5 - Return nil when no aggs
  6 +- Added emoji search
6 7  
7 8 ## 1.0.0
8 9  
... ...
Gemfile
... ... @@ -5,3 +5,4 @@ gemspec
5 5  
6 6 gem "sqlite3"
7 7 gem "activerecord", "~> 4.2.0"
  8 +gem "gemoji-parser"
... ...
README.md
... ... @@ -315,6 +315,22 @@ Or turn off misspellings with:
315 315 Product.search "zuchini", misspellings: false # no zucchini
316 316 ```
317 317  
  318 +### Emoji [master]
  319 +
  320 +Make :ice_cream::cake: match `ice cream cake`!
  321 +
  322 +Add this line to your application’s Gemfile:
  323 +
  324 +```ruby
  325 +gem 'gemoji-parser'
  326 +```
  327 +
  328 +And use:
  329 +
  330 +```ruby
  331 +Product.search "[emoji go here]", emoji: true
  332 +```
  333 +
318 334 ### Indexing
319 335  
320 336 Control what data is indexed with the `search_data` method. Call `Product.reindex` after changing this method.
... ...
lib/searchkick/query.rb
... ... @@ -15,6 +15,10 @@ module Searchkick
15 15 term = term.to_s
16 16 end
17 17  
  18 + if options[:emoji]
  19 + term = EmojiParser.parse_unicode(term) { |e| " #{e.name} " }.strip
  20 + end
  21 +
18 22 @klass = klass
19 23 @term = term
20 24 @options = options
... ...
test/match_test.rb
... ... @@ -197,4 +197,16 @@ class MatchTest < Minitest::Test
197 197 ]
198 198 assert_search "almond", []
199 199 end
  200 +
  201 + def test_emoji
  202 + skip unless defined?(EmojiParser)
  203 + store_names ["Banana"]
  204 + assert_search "🍌", ["Banana"], emoji: true
  205 + end
  206 +
  207 + def test_emoji_multiple
  208 + skip unless defined?(EmojiParser)
  209 + store_names ["Ice Cream Cake"]
  210 + assert_search "🍨🍰", ["Ice Cream Cake"], emoji: true
  211 + end
200 212 end
... ...