Lucene:如何在一个Term中进行通配符搜索?

时间:2009-06-10 09:15:11

标签: search lucene wildcard term

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

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是使level成为查询解析器的默认字段,从而将查询简化为:

(1 OR 2)

但是,我怀疑这并不是你想要的......

根据Lucene query parser syntax documentation,使用布尔运算符(ANDOR)无法完成所要求的内容。但是,看起来可能使用加号(+)和减号(-)运算符。根据文件:

  

Lucene支持使用括号将多个子句分组到单个字段。

     

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

     

title:(+return +"pink panther")

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