我想同时搜索两个查询,例如“macbook pro”和“iphone”,搜索的默认字段是“title”,所以查询是:(标题:macbook pro title:iphone) 。我想在每个查询中使用“和”操作,例如(+标题:macbook + title:pro),以及查询之间的“或”操作,即 ((+标题:macbook + title:pro)(标题:iphone))。但是,在使用QueryParser解析此查询后(标题:macbook pro title:iphone),结果将是:(标题:macbook title:pro title:iphone),如果我设置解析器的默认运算符是QueryParser.AND_OPERATOR,那么查询将是(+标题:macbook + title:pro + title:iphone)。我也不需要。我该怎么做才能得到正确的查询?((+ title:macbook + title:pro)(title:iphone))
答案 0 :(得分:1)
您无法使用QueryParser参数实现此功能,但您可以使用Lucene API中的BooleanQuery以编程方式构建查询
类似的问题: How to create nested boolean query with lucene API (a AND (b OR c))?