我实际上正在使用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”这样的空格进行搜索:永远不会有效。
有人可以建议我或帮我解决这两个功能失常的问题吗?
非常感谢你, 最好的问候,
答案 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 似乎是我的问题的解决方案:没有更多重复的结果,我可以搜索带有空格的东西......并且性能显着提升(更快的结果)=)