繁体   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