全部。原谅我,我是Solr的新手,我正在尝试在Solr中添加拼写检查。
目前我可以说它有效。但是我遇到了一个问题,这个建议没有像我预期的那样出现。
我尝试使用关键字lu
进行搜索。并期望结果中有建议lung
。但它并没有显现出来。
网址为http://10.2.21.38:7574/solr/gettingstarted_shard1_replica2/spell?q=lu&spellcheck=true&spellcheck.collate=true&spellcheck.build=true
只有当我尝试使用lun
时。它可以返回建议lung
。
有什么想法让它发挥作用?感谢。
更新
它似乎与配置<str name="accuracy">{number}</str>
有关,原始值为0.7。当我把它改成像0.001这样的较小值。关键字lu
可以获得建议lung
。
但我想知道它对accuracy
意味着什么。该文件仅对此有所说明。The accuracy setting defines the threshold for a valid
suggestion
。就是这样。
有人可以告诉我更多有关它的信息,以便更好地理解。是否有任何其他配置影响建议结果?感谢。
答案 0 :(得分:1)
精度设置是指活动StringDistance计算器返回的值(取决于相似性,介于0和1之间)。 Lucene中的标准距离测量器是LevensteinDistance(原文如此)。我将参考源代码来了解它是如何工作的 - 我对代码并不熟悉。返回的值至少基于:
return 1.0f - ((float) p[n] / Math.max(other.length(), sa.length));
其中p [n]是通过代码中的上述迭代计算的。
您可以更改拼写检查程序中的大多数实现,例如距离测量器或拼写检查程序本身。有关示例,请参阅Spell Checking。 maxEdits
和minPrefix
也可能很有趣。此外,请记住 lu 和肺有相当大的差异,因为这两个术语都很短,而且彼此之间并没有真正的拼写错误。还有其他方法可以自动完成,例如Suggest模块或针对StrField或KeywordTokenizer-ed字段的外卡搜索。