【发布时间】:2017-02-27 08:14:52
【问题描述】:
我正在搜索我的应用程序。对于输入的搜索词(foo),
1) 我寻找完全匹配 (foo),如果它返回 NULL
2)我使用模糊搜索(foo~),如果它返回NULL
3) 我使用通配符 (foo*)。
这是一种有效的方法吗?或者有没有任何lucene 方法来做所有这些?
【问题讨论】:
标签: lucene
我正在搜索我的应用程序。对于输入的搜索词(foo),
1) 我寻找完全匹配 (foo),如果它返回 NULL
2)我使用模糊搜索(foo~),如果它返回NULL
3) 我使用通配符 (foo*)。
这是一种有效的方法吗?或者有没有任何lucene 方法来做所有这些?
【问题讨论】:
标签: lucene
在 Lucene 中没有内置的方法可以做到这一点。但是,通常这种情况是在客户端的 Lucene 之外处理的。是的,根据我的经验,它非常有效,因为它通常可以提供高精度的结果。在互联网上的某些来源中,它被称为分阶段搜索
例如你创建一个完全匹配的查询,比如说 TermQuery("field","foo"),如果这个查询什么都不返回,那么你使用 FuzzyQuery 和最后一个 PrefixQuery(我会推荐它而不是 WildcardQuery,对于你想要做的最后一个案例)
【讨论】: