Commit 471ec8aaead4c5aa1c6f26c212d723dd3f1ceb6a
1 parent
17ed24fd
Exists in
master
and in
21 other branches
Added language option - closes #115
Showing
3 changed files
with
22 additions
and
5 deletions
Show diff stats
CHANGELOG.md
README.md
@@ -176,6 +176,18 @@ Available options are: | @@ -176,6 +176,18 @@ Available options are: | ||
176 | :text_end | 176 | :text_end |
177 | ``` | 177 | ``` |
178 | 178 | ||
179 | +### Language [master] | ||
180 | + | ||
181 | +Searchkick defaults to English for stemming. To change this, use: | ||
182 | + | ||
183 | +```ruby | ||
184 | +class Product < ActiveRecord::Base | ||
185 | + searchkick language: "German" | ||
186 | +end | ||
187 | +``` | ||
188 | + | ||
189 | +[See the list of languages](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-snowball-tokenfilter.html) | ||
190 | + | ||
179 | ### Synonyms | 191 | ### Synonyms |
180 | 192 | ||
181 | ```ruby | 193 | ```ruby |
lib/searchkick/reindex.rb
@@ -94,24 +94,24 @@ module Searchkick | @@ -94,24 +94,24 @@ module Searchkick | ||
94 | searchkick_keyword: { | 94 | searchkick_keyword: { |
95 | type: "custom", | 95 | type: "custom", |
96 | tokenizer: "keyword", | 96 | tokenizer: "keyword", |
97 | - filter: ["lowercase", "snowball"] | 97 | + filter: ["lowercase", "searchkick_stemmer"] |
98 | }, | 98 | }, |
99 | default_index: { | 99 | default_index: { |
100 | type: "custom", | 100 | type: "custom", |
101 | tokenizer: "standard", | 101 | tokenizer: "standard", |
102 | # synonym should come last, after stemming and shingle | 102 | # synonym should come last, after stemming and shingle |
103 | - # shingle must come before snowball | ||
104 | - filter: ["standard", "lowercase", "asciifolding", "searchkick_index_shingle", "snowball"] | 103 | + # shingle must come before searchkick_stemmer |
104 | + filter: ["standard", "lowercase", "asciifolding", "searchkick_index_shingle", "searchkick_stemmer"] | ||
105 | }, | 105 | }, |
106 | searchkick_search: { | 106 | searchkick_search: { |
107 | type: "custom", | 107 | type: "custom", |
108 | tokenizer: "standard", | 108 | tokenizer: "standard", |
109 | - filter: ["standard", "lowercase", "asciifolding", "searchkick_search_shingle", "snowball"] | 109 | + filter: ["standard", "lowercase", "asciifolding", "searchkick_search_shingle", "searchkick_stemmer"] |
110 | }, | 110 | }, |
111 | searchkick_search2: { | 111 | searchkick_search2: { |
112 | type: "custom", | 112 | type: "custom", |
113 | tokenizer: "standard", | 113 | tokenizer: "standard", |
114 | - filter: ["standard", "lowercase", "asciifolding", "snowball"] | 114 | + filter: ["standard", "lowercase", "asciifolding", "searchkick_stemmer"] |
115 | }, | 115 | }, |
116 | # https://github.com/leschenko/elasticsearch_autocomplete/blob/master/lib/elasticsearch_autocomplete/analyzers.rb | 116 | # https://github.com/leschenko/elasticsearch_autocomplete/blob/master/lib/elasticsearch_autocomplete/analyzers.rb |
117 | searchkick_autocomplete_index: { | 117 | searchkick_autocomplete_index: { |
@@ -190,6 +190,10 @@ module Searchkick | @@ -190,6 +190,10 @@ module Searchkick | ||
190 | type: "nGram", | 190 | type: "nGram", |
191 | min_gram: 1, | 191 | min_gram: 1, |
192 | max_gram: 50 | 192 | max_gram: 50 |
193 | + }, | ||
194 | + searchkick_stemmer: { | ||
195 | + type: "snowball", | ||
196 | + language: options[:language] || "English" | ||
193 | } | 197 | } |
194 | }, | 198 | }, |
195 | tokenizer: { | 199 | tokenizer: { |