2015-10-15 48 views
2

我實際上使用的是Lucene 2.9.4.1,如果我搜索同一行中只存在一次的東西,一切正常。 每個實例,如果Lucene在同一行中找到相同的字符串,我有重複的(或更多)結果。Lucene在文本搜索中重複的結果/空格

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

第二個問題是關於用像「你好世界」這樣的空間搜索:從來沒有工作。

任何人都可以告訴我或幫助我處理這兩個故障功能嗎?

非常感謝你提前, 最好的問候,

回答

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是我的問題的解決方案:沒有更多的重複結果,我可以用空格搜索...性能顯着提高(更快的結果)=)