Lucene搜索由空格分隔的两个参数

时间:2014-09-08 18:17:33

标签: java lucene

我有像这样的lucene文件

id   age   status
1    1 2    C G
2    2      G
3    2 1    C G  
4    2 5    C H

我确实搜索过像 年龄:2和状态:'G'
它返回了前三个文件。
问题是我不想要id为3的第三个文件。我只想要前两个结果。数据安排如下:

对于身份1:
1岁的人有状态C
2岁的状态为G

对于身份3:
2岁时的身份为C
1岁的人有状态G

我想要年龄2,状态G不是C ..这就是为什么id 3对我来说是错误的。

我该如何实现这一目标? 我正在使用java

1 个答案:

答案 0 :(得分:1)

对于将2+属性绑定在一起的搜索(例如id 3,其中age = 2 / status = C且age = 1 / status = G),我认为您需要在索引中将它们绑定在一起 - 例如,添加一个单独的Lucene字段 age_status ,这样您的Lucene文档将如下所示:

id   age   status  age_status
1    1 2    C G    1/C, 2/G
2    2      G      2/G
3    2 1    C G    2/C, 1/G 
4    2 5    C H    2/C, 5/H

(其中' /'是 age_status 中年龄和状态的分隔符, age_status 中的2+值以分隔符号显示)。这将允许您搜索age_status:2/G,只会产生Lucene文档id = 1和id = 2作为搜索命中。