我有以下lucene指数:
Document A
item = level:(1)
item = level:(2)
item = level:(3)
Document B
item = level:(1)
item = level:(4)
假设我要搜索包含级别的所有文档:(1)AND级别:(2)?
Lucene查询可以是:
"item:level\:\(1\) AND level\:\(2\)"
但是也可以做这样的事情:
"item:level\:\(1 OR 2\)"
(原因是我不想重复字符串"level\:"
)
答案 0 :(得分:0)
最简单的解决方案是使level
成为查询解析器的默认字段,从而将查询简化为:
(1 OR 2)
但是,我怀疑这并不是你想要的......
根据Lucene query parser syntax documentation,使用布尔运算符(AND
和OR
)无法完成所要求的内容。但是,看起来可能使用加号(+
)和减号(-
)运算符。根据文件:
Lucene支持使用括号将多个子句分组到单个字段。
要搜索包含单词“return”和短语“pink panther”的标题,请使用以下查询:
title:(+return +"pink panther")
这不是您正在寻找的,但它可能是合适的。我不确定如何以这种方式编写OR
条款。