如何在Lucene.Net中实现适当的模糊搜索?

3

我已经在Lucene.Net中完成了模糊搜索。如果我搜索Feature,则只应该返回FeatureFeaturedfeaturing等相关结果。但实际返回的数据是基于文本匹配的,例如ventureculture等,其中ture与模糊搜索匹配。我的代码如下:

Query query = new FuzzyQuery(new Term("ContentText", searchString));
finalQuery.Add(query, BooleanClause.Occur.SHOULD);
3个回答

2
你应该了解一下叫做“词形归并”的过程(http://en.wikipedia.org/wiki/Lemmatisation)。你想要基于单词的基本形式(称为词元)构建索引,同样的事情也适用于查询。Lucene默认支持英语,所以这方面不应该有任何问题。

+1 - 搜索更多关于此的信息,一个好词是“词干提取”。 - M.Babcock

0

您可以传递额外的过滤器,检查minimumscore属性以及minimumsimilarity属性,这可以提高结果的质量。在特定情况下,我做过的其他事情是使用多个不同的查询类型并组合结果(过滤掉低分数),然后返回一个组合列表。对于那些可以动态地“假设你的意思是…”结果的引擎而言,这种方法非常有效,而不是直接问您“你的意思是…”。


这是几年前的事了,但您介意详细说明一下您的方法吗?您是在用户界面中展示“您是否想要找”的内容,还是只展示类似的搜索结果而不在用户界面中显示此内容? - Markus Knappen Johansson

0

你可能需要设置 Parser.FuzzyMinSim


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接