我試圖用MultiFieldQueryParser執行以下搜索:使用Lucene MultiFieldQueryParser多個必填字段
內容:你好世界的優先級:高
即,我只希望看到的文檔返回其包含單詞'hello'和'world',並且優先級爲'高'。 MultiFieldQueryParser的默認行爲似乎返回包含內容的任何內容:hello world OR priority:high - 我無法弄清楚如何改變它。
有什麼建議嗎?
我試圖用MultiFieldQueryParser執行以下搜索:使用Lucene MultiFieldQueryParser多個必填字段
內容:你好世界的優先級:高
即,我只希望看到的文檔返回其包含單詞'hello'和'world',並且優先級爲'高'。 MultiFieldQueryParser的默認行爲似乎返回包含內容的任何內容:hello world OR priority:high - 我無法弄清楚如何改變它。
有什麼建議嗎?
當您想跨多個字段搜索一個術語時,使用MultiFieldQuery。你正在尋找的是一個簡單的布爾查詢和兩個子句。一個查詢如下應該工作。
+(+contents:hello +contents:world) +priority:high
這裏有一個布爾查詢一起Occur.MUST一個條款是,反過來,一個布爾查詢兩個子句,另一個是詞語查詢。
您可以通過setDefaultOperator
方法爲解析器設置默認運算符。
一個例子:[?如何使Lucene的比賽中查詢所有的字]
...
Analyzer userTermsAnalyzer = searchFactory.getAnalyzer(MyEntity.class);
MultiFieldQueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_CURRENT, new String[]{"text"}, userTermsAnalyzer);
queryParser.setDefaultOperator(QueryParser.Operator.AND);
Query taskQuery = queryParser.parse("contents:hello world priority:high");
的
可能重複(http://stackoverflow.com/questions/450547/how-to-make-lucene-match - 全詞-在查詢) – 2011-02-18 14:05:32