Lucene: how to assign and/or search
我想同时搜索两个查询,比如"macbook pro"和"iphone",默认搜索的字段是"title",所以查询是:(title: macbook pro 标题:iphone)。我想在每个查询中使用 "and" 操作,例如(title:macbook title:pro),以及查询之间的"或"操作,即
((标题:macbook 标题:pro)(标题:iphone))。但是,使用 QueryParser 解析这个查询(title: macbook pro title:iphone)后,结果将是 :(title: macbook title:pro title:iphone),如果我设置解析器的默认操作符是 QueryParser.AND_OPERATOR,那么查询将是(标题:macbook 标题:pro 标题:iphone)。我也不需要。我该怎么做才能得到正确的查询?((title:macbook title:pro) (title:iphone))
您无法使用 QueryParser 参数实现此目的,但您可以使用 Lucene API 中的 BooleanQuery 以编程方式构造查询
类似的问题:
如何使用 lucene API (a AND (b OR c)) 创建嵌套布尔查询?