我有像这样的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
答案 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作为搜索命中。