Solr模糊搜索(最多2次编辑)

时间:2016-06-18 08:29:41

标签: search solr fuzzy

我正在使用Solr 6.0.0

我正在使用数据驱动配置来实现与配置相关的目的。大多数配置都是标准配置。

我在Solr中有一份文件

命名:" aquickbrownfox"

现在,如果我进行模糊搜索,如:

命名:aquickbrownfo〜0.7          要么 的名:aquickbrownf〜0.7

它列出了结果中的记录。

但如果我进行搜索:

命名:aquickbrown〜0.7

它没有列出记录。

是否必须对solrconfig.xml中设置为2的 maxEdits 执行某些操作?

我试着增加它。但我无法使用此配置创建集合。它给出了一个错误:

  

错误:错误创建SolrCore' my-search':无法创建核心   [my-search]引起::maxEdits无效

Max 2 Edits似乎是一个严重的限制。我想知道在运算符之后传递小数值有什么用。

我的用例:

我有一个联系人数据库。我应该根据三个参数检测重复项:名称,电子邮件和电话。所以我依靠Solr进行模糊搜索。使用简单的假设,电子邮件和电话相对容易使用。名字似乎有点棘手。对于名称中的每个单词,我打算进行模糊搜索。我希望之后的可选参数能够在没有maxEdit距离限制的情况下工作。

1 个答案:

答案 0 :(得分:3)

文档不再建议在波浪号后使用小数值 - 有关详细信息,请参阅http://lucene.apache.org/core/4_6_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Fuzzy_Searches

但是,您是正确的,只允许对搜索字符串进行2次更改以执行模糊搜索。我猜这种限制可以在效率和实用性之间取得平衡。

solrconfig.xml中的 maxEdits 参数适用于DirectSpellChecker配置,除非您使用拼写检查,否则不会影响您的搜索。

对于您的用例,您最好的方法可能是使用不同的字段配置将名称字段索引两次:一个使用一组简单的分析器和过滤器(即StandardTokenizerFactory,StandardFilterFactory,LowerCaseFilterFactory),另一个使用语音匹配器,例如Beider-Morse filter。您可以使用第一个字段执行模糊搜索,第二个版本查找可能拼写不同但名称与要检查的名称相同的名称。