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

Solr Fuzzy search (max 2 edits)

我正在使用 Solr 6.0.0

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

我在 Solr 中有一个文档

姓名:"aquickbrownfox"

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

名称:aquickbrownfo~0.7 要么 姓名:aquickbrownf~0.7

它列出了结果中的记录。

但是如果我像这样搜索:

姓名:aquickbrown~0.7

没有列出记录。

是否与 solrconfig.xml 中设置为 2 的 maxEdits 相关?

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

ERROR: Error CREATEing SolrCore 'my-search': Unable to create core [my-search] Caused by: Invalid maxEdits

最多 2 次编辑似乎是一个严重的限制。我想知道在 ~ 运算符之后传递小数值有什么用。

我的用例:

我有一个联系人数据库。我应该根据三个参数检测重复项:姓名、电子邮件和 Phone。所以我依赖 Solr 进行模糊搜索。电子邮件和 Phone 在简单的假设下相对容易处理。名字似乎有点棘手。对于名称中的每个词,我计划进行模糊搜索。我希望 ~ 之后的可选参数可以在没有最大编辑距离限制的情况下工作。

文档不再建议在波浪号后使用分数值 - 有关详细信息,请参阅 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。您可以使用第一个字段进行模糊搜索,使用第二个版本来查找可能拼写不同但发音相同的姓名。