我有下面的lucene索引:
Document A
item = level:(1)
item = level:(2)
item = level:(3)
Document B
item = level:(1)
item = level:(4)
假设我想搜索包含level:(1)AND level:(2)的所有文档?
Lucene查询可能如下所示:
"item:level\:\(1\) AND level\:\(2\)"
但是否也可以这样做:
"item:level\:\(1 OR 2\)"
?
(The原因是我不想重复字符串"level\:"
)
1条答案
按热度按时间gorkyyrv1#
最简单的解决方案是将
level
作为查询解析器的默认字段,这样就可以将查询简化为:不过,我怀疑这并不是你要找的......
根据Lucene query parser syntax documentation,您所请求的操作不能使用布尔运算符(
AND
和OR
)来完成。但是,看起来使用加号(+
)和减号(-
)运算符是可能的。根据文档:Lucene支持使用括号将多个子句分组到一个字段。
要搜索同时包含单词“return”与短语“pink panther”得标题,请使用以下查询:
title:(+return +"pink panther")
这并不是你想要的,但是它可能是合适的。我不确定
OR
子句是如何以这种方式编写的。