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

5ktev3wc  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(224)

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

gorkyyrv

gorkyyrv1#

最简单的解决方案是将level作为查询解析器的默认字段,这样就可以将查询简化为:

(1 OR 2)

不过,我怀疑这并不是你要找的......
根据Lucene query parser syntax documentation,您所请求的操作不能使用布尔运算符(ANDOR)来完成。但是,看起来使用加号(+)和减号(-)运算符是可能的。根据文档:
Lucene支持使用括号将多个子句分组到一个字段。
要搜索同时包含单词“return”与短语“pink panther”得标题,请使用以下查询:
title:(+return +"pink panther")
这并不是你想要的,但是它可能是合适的。我不确定OR子句是如何以这种方式编写的。

相关问题