2012-11-27 76 views
1

我最近開始在lucene.net中玩一個在工作的內部項目。我正在尋找使用lucene.net創建一種自動完成類型。我的索引存儲的顯示名稱,當我做通配符搜索,即詹姆斯*它工作正常。字段中的多字搜索

這個問題似乎是當這個詞之間的空間,即詹姆斯邦尼*它似乎忘記了第一個字,並開始嘗試和匹配Bon。

不知道我是否做錯了什麼,但嘗試使用一些不同的分析儀,但沒有運氣。

任何人有任何想法,可以讓我在正確的軌道上?

28/11/2012

在我的項目重新尋找後,我意識到,我使用的是MultiFieldQueryParser嘗試和搜索多個領域。試圖改變DefaultOperator的建議,但沒有運氣。

var analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30); 
var mparser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, new string[] { "displayname", "company", "email" }, analyzer); 
+0

您是否嘗試過'queryParser.SetDefaultOperator(QueryParser.Operator.AND);'? –

+0

「Lucene支持單個和多個字符通配符搜索(不在短語查詢中)。」 [來源](http://lucene.apache.org/core/old_versioned_docs/versions/2_9_1/queryparsersyntax.html) –

+0

感謝您的建議。將嘗試一下,讓你知道。 –

回答

2

默認情況下Lucene.net執行所提供的條件,而不是一個AND搜索的搜索OR。使用此代碼來改變它:

parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND); 
0

如果你只是執行上單場多字查詢,那麼你要多字更像「喜歡」操作,然後使用下面一行。

parser.DefaultOperator = QueryParser.Operator.AND;