我在处理Lucene的相似因素方面遇到了很多麻烦。我希望它应用一个与其默认值不同的相似性因子(根据文档为0.5),但它似乎不起作用。
当我输入一个明确设置所需相似性因子的查询时,如[tinberland~0.5](注意我写了tiNberland,带有“N”,而正确的是带有“M”),它会带来很多产品由Timberland制造商提供。但是当我输入[tinberland](没有明确定义的相似性因子)并尝试通过代码设置相似性时,它不起作用(不返回任何结果)。
我写的用于设置相似性的代码如下:
multiFieldQueryParser.SetFuzzyMinSim(0.5F);
我没有更改相似度算法,所以它使用的是DefaultSimilarity类。
这不是通过代码应用相似性的正确或推荐方式吗?模糊查询是否有特定的QueryParser?
非常感谢任何帮助。 提前谢谢!
答案 0 :(得分:0)
您所设置的是最小相似度,例如如果有人搜索foo~.1
,则解析器会将其更改为foo~.5
。它不是说“将每个查询都转换为模糊查询。”
你可以这样使用MultiFieldQueryParser.getFuzzyQuery:
Query q = parser.getFuzzyQuery(field, term, minSimilarity);
但这当然要求你为每个字段调用getFuzzyQuery。我不知道“MultiFieldFuzzyQueryParser”类,但它所做的只是组合一堆getFuzzyQuery调用。