2014-04-30 90 views
0

我寫了一些代碼,需要在搜索字符串中包含所有單詞,例如「Apple is red」。我目前使用MultiFieldQueryParser,但搜索查詢將是(標題:「apple?red」body:「apple?red」)。我希望查詢看起來應該是什麼字符串。 「蘋果紅」應該變成「蘋果紅」。我該怎麼做?如何創建一個lucene查詢

回答

1

您的查詢看起來是正確的。輸出中的問號表示位置增量,它不表示查詢中的實際項。

單詞「is」從查詢中刪除,索引由StandardAnalyzer刪除,因爲它是默認停用詞集中的停用詞。 StopFilter將刪除這些詞語,但會增加表示該詞語被刪除的位置,以便與詞組查詢進行更加緊密的匹配。

除非您發現查詢的結果存在問題,否則似乎沒有任何問題。

+0

無論如何刪除它的停止詞集? –

+0

[Yes](http://lucene.apache.org/core/4_7_0/analyzers-common/org/apache/lucene/analysis/standard/StandardAnalyzer.html#StandardAnalyzer(org.apache.lucene.util.Version,% 20org.apache.lucene.analysis.util.CharArraySet)) – femtoRgon

+0

謝謝,我看了一下java文檔,並在分析器構造函數中添加了一個新的閱讀器,它現在可以工作。 –