Lucene:设置搜索所需的最低相似度

时间:2010-11-18 16:33:20

标签: lucene similarity

我在处理Lucene的相似因素方面遇到了很多麻烦。我希望它应用一个与其默认值不同的相似性因子(根据文档为0.5),但它似乎不起作用。

当我输入一个明确设置所需相似性因子的查询时,如[tinberland~0.5](注意我写了tiNberland,带有“N”,而正确的是带有“M”),它会带来很多产品由Timberland制造商提供。但是当我输入[tinberland](没有明确定义的相似性因子)并尝试通过代码设置相似性时,它不起作用(不返回任何结果)。

我写的用于设置相似性的代码如下:

multiFieldQueryParser.SetFuzzyMinSim(0.5F);

我没有更改相似度算法,所以它使用的是DefaultSimilarity类。

这不是通过代码应用相似性的正确或推荐方式吗?模糊查询是否有特定的QueryParser?

非常感谢任何帮助。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

您所设置的是最小相似度,例如如果有人搜索foo~.1,则解析器会将其更改为foo~.5。它不是说“将每个查询都转换为模糊查询。”

你可以这样使用MultiFieldQueryParser.getFuzzyQuery

Query q = parser.getFuzzyQuery(field, term, minSimilarity);

但这当然要求你为每个字段调用getFuzzyQuery。我不知道“MultiFieldFuzzyQueryParser”类,但它所做的只是组合一堆getFuzzyQuery调用。