Lucene文本搜索中的重复结果/空格

时间:2015-10-15 08:32:01

标签: lucene.net

我实际上正在使用Lucene 2.9.4.1,如果我在同一行中搜索只存在一次的内容,一切正常。 根据实例,如果Lucene在同一行中找到我正在查找的相同字符串,则会有重复(或更多)结果。

I’m actually using the following BooleanQuery: 
booleanQuery.Add(new TermQuery(new Term(propertyInfo.Name, textSearch)), BooleanClause.Occur.SHOULD);

第二个问题是用“hello world”这样的空格进行搜索:永远不会有效。

有人可以建议我或帮我解决这两个功能失常的问题吗?

非常感谢你, 最好的问候,

1 个答案:

答案 0 :(得分:1)

好吧,我刚刚找到了解决我的两个问题的答案=)

我正在使用它:

BooleanQuery booleanQuery = new BooleanQuery();
PropertyInfo[] propertyInfos = typeof(T).GetProperties();
foreach (PropertyInfo propertyInfo in propertyInfos)
{
    booleanQuery.Add(new TermQuery(new Term(propertyInfo.Name, textSearch)), BooleanClause.Occur.SHOULD);
}

现在我用它:

var booleanQuery = new BooleanQuery();
textSearch = QueryParser.Escape(textSearch.Trim().ToLower());

string[] properties = typeof(T).GetProperties().Select(x => x.Name).ToArray();

Analyzer analyzer = new StandardAnalyzer(global::Lucene.Net.Util.Version.LUCENE_29);
MultiFieldQueryParser titleParser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29, properties, analyzer);
Query titleQuery = titleParser.Parse(textSearch);

booleanQuery.Add(titleQuery, BooleanClause.Occur.SHOULD);

分析器 MultiFieldQueryParser 似乎是我的问题的解决方案:没有更多重复的结果,我可以搜索带有空格的东西......并且性能显着提升(更快的结果)=)