我試圖讓部分搜索工作,爲elasticsearch nGram/edgengram部分匹配?
「SW」 「SWE」 「SWED」
應符合「瑞典」
我搜索看看周圍,只是不能得到它的工作
我使用 this code來自Tyre repo作爲模板代碼。
整個單詞仍然匹配!
我有reindex,並嘗試使用edgengram過濾器。
我試圖讓部分搜索工作,爲elasticsearch nGram/edgengram部分匹配?
「SW」 「SWE」 「SWED」
應符合「瑞典」
我搜索看看周圍,只是不能得到它的工作
我使用 this code來自Tyre repo作爲模板代碼。
整個單詞仍然匹配!
我有reindex,並嘗試使用edgengram過濾器。
我不認爲一個edgengram是必要的,一個簡單的前綴搜索會做你的描述:
例如:
{
"prefix" : { "country" : "swe" }
}
裁判:http://www.elasticsearch.org/guide/reference/query-dsl/prefix-query.html
我不是一個Ruby developper但發現這篇文章很有用: http://dev.af83.com/2012/01/19/autocomplete-with-tire.html
喜歡它吧:
Most databases handle that feature with a filter (with LIKE keyword in SQL, regular expression search with mongoDB). The strategy is simple: iterate on all results and keep only words which match the filter. This is brutal and hurts the hard drive. Elastic Search can do it too, with the prefix query.
With a small index, it plays well. For large indexes it will be more slow and painful.
你說:
whole words still match!
而且你能指望什麼? 「瑞典」不應該與「瑞典」相匹配,而只能是「Swe」,「Swed」或瑞典人「? 因爲您對該字段的查詢也被分析過
使用edgengram token filter。尋找。
它不僅會爲swe,probly會想要一個更一般的方式來做到這一點:) – skyw00lker