我正在使用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距离限制的情况下工作。
答案 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。您可以使用第一个字段执行模糊搜索,第二个版本查找可能拼写不同但名称与要检查的名称相同的名称。