0

我有以下 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\)"

?

(这样做的原因是我不想重复字符串"level\:"

4

1 回答 1

0

最简单的解决方案是让level您的查询解析器的默认字段,让您的查询减少到:

(1 OR 2)

但是,我怀疑这不是您正在寻找的...

根据Lucene 查询解析器语法文档,您所要求的不能使用布尔运算符 ( ANDand OR) 来完成。但是,看起来可以使用加号 ( +) 和减号 ( -) 运算符。根据文档:

Lucene 支持使用括号将多个子句组合到一个字段中。

要搜索同时包含单词“return”和短语“pink panther”的标题,请使用以下查询:

title:(+return +"pink panther")

这不完全是您正在寻找的,但它可能是合适的。我不确定如何OR以这种方式编写子句。

于 2009-06-10T11:09:51.687 回答