我正在尝试部分搜索,搜索
“SW” “SWE” “SWED ”
应匹配“Sweden”
我环顾四周,无法让它工作
我正在使用 来自轮胎回购的this code作为模板代码。
整个单词仍然匹配!
我有重新索引并尝试使用edgengram过滤器。
答案 0 :(得分:1)
我不是Ruby开发者,但发现这篇文章很有用: http://dev.af83.com/2012/01/19/autocomplete-with-tire.html
喜欢sais:
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!
你期待什么? “瑞典”不应该与“瑞典”相匹敌,而只能与“瑞典”,“瑞典”或瑞典人相提并论吗? 因为您对该字段的查询也进行了分析
答案 1 :(得分:1)
使用edgengram token filter。那将为您提供所需的信息。
答案 2 :(得分:-2)
我不认为edgengram是必要的,简单的前缀搜索会做你所描述的:
例如:
{
"prefix" : { "country" : "swe" }
}
参考:http://www.elasticsearch.org/guide/reference/query-dsl/prefix-query.html