[英]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.