2010-08-05 70 views
9

據我所知lucene(.net)不支持在searchterm開頭的通配符 - >http://lucene.apache.org/java/2_0_0/queryparsersyntax.html 「注意:你不能使用*或?符號作爲搜索的第一個字符。「在searchterm開始的通配符-Lucene

例如 * myword

也許是因爲它的安靜難以搜索關鍵詞前,搜索「一切」。

儘管如此,我們仍然期待在開始時使用通配符。 有誰知道這是可能的嗎?

思考之一是搜索關鍵詞,B搜索關鍵詞,...... Z *搜索關鍵詞 ......但似乎有點亂了我。提前

感謝

回答

15

你的問題被打上Lucene.NET所以我想你指的是.NET版本,而不是Java版本。

是的,你可以通過

var queryParser = new QueryParser(LuceneVersion, "content", new StandardAnalyzer(LuceneVersion)); 
queryParser.SetAllowLeadingWildcard(true); 

必須在搜索詞的開頭使用通配符,但你需要知道的性能結果。在此blog中查找更詳細的源代碼。

由於Lucene.NET是Java版本的一個端口,我懷疑你可以對Java版本使用相同的方法。雖然我沒有證實這一點。

+1

你說得對。對於Lucene Java,同樣的方法setAllowLeadingWildcard也可以在QueryParser-Object上使用。 – Tobias 2011-12-01 17:55:18

+1

截至今天,在這現在是一個屬性:parser.AllowLeadingWildcard = true; – mbowles 2016-04-20 23:02:18