1

我正在尝试使部分搜索工作,搜索

“sw” “swe” “swed

应该匹配“瑞典”

我环顾四周,就是无法让它工作

导轨代码

我正在使用 来自 Tire repo 的这段代码作为模板代码。

整个单词仍然匹配!

我已经重新索引并尝试使用 edgengram 过滤器。

4

2 回答 2

1

使用edgengram 标记过滤器。这会让你得到你正在寻找的东西。

于 2013-04-26T19:53:48.493 回答
1

我不是 Ruby 开发人员,但发现这篇文章很有用: 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!

你期望什么?“Sweden”不应该匹配“Sweden”而只匹配“Swe”、“Swed”或Swede”吗?因为您对该字段的查询也被分析了

于 2012-07-03T01:54:49.550 回答