簡體   English   中英

使用Lucene MultiFieldQueryParser來處理多個必填字段

[英]Using Lucene MultiFieldQueryParser for multiple required fields

我正在嘗試使用MultiFieldQueryParser執行以下搜索:

內容:您好世界優先級:高

即,我希望看到返回的文檔包含單詞“ hello”和“ world”,並且優先級為“ high”。 MultiFieldQueryParser的默認行為似乎返回包含以下內容的任何內容:Hello world或priority:high-我不知道如何更改此內容。

有什么建議嗎?

當您想跨多個字段搜索術語時,將使用MultiFieldQuery。 您正在尋找的是帶有兩個子句的簡單布爾查詢。 如下查詢應該起作用。

+(+contents:hello +contents:world) +priority:high

這里有一個Occur.MUST子句的布爾查詢,一個子句又是兩個子句的布爾查詢,另一個是術語查詢。

您可以通過setDefaultOperator方法為解析器設置默認運算符。

一個例子:

...
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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM