拼写检查建议没有填充预期结果

时间:2015-12-24 13:26:02

标签: solr spell-checking

全部。原谅我,我是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

enter image description here

有什么想法让它发挥作用?感谢。

更新

它似乎与配置<str name="accuracy">{number}</str>有关,原始值为0.7。当我把它改成像0.001这样的较小值。关键字lu可以获得建议lung

但我想知道它对accuracy意味着什么。该文件仅对此有所说明。The accuracy setting defines the threshold for a valid suggestion。就是这样。

有人可以告诉我更多有关它的信息,以便更好地理解。是否有任何其他配置影响建议结果?感谢。

1 个答案:

答案 0 :(得分:1)

精度设置是指活动StringDistance计算器返回的值(取决于相似性,介于0和1之间)。 Lucene中的标准距离测量器是LevensteinDistance(原文如此)。我将参考源代码来了解它是如何工作的 - 我对代码并不熟悉。返回的值至少基于:

return 1.0f - ((float) p[n] / Math.max(other.length(), sa.length));

其中p [n]是通过代码中的上述迭代计算的。

您可以更改拼写检查程序中的大多数实现,例如距离测量器或拼写检查程序本身。有关示例,请参阅Spell CheckingmaxEditsminPrefix也可能很有趣。此外,请记住 lu 有相当大的差异,因为这两个术语都很短,而且彼此之间并没有真正的拼写错误。还有其他方法可以自动完成,例如Suggest模块或针对StrField或KeywordTokenizer-ed字段的外卡搜索。