有没有办法在lucene中存储位图字段并使用位掩码操作进行搜索?
我有一个对象的很多布尔属性,而不是每个人都有一个单独的字段,我正在考虑是否有办法将每个属性存储为位图中的位并使用位掩码进行搜索。
字段值可以是:
Attr 1 | Attr 2 | Attr 3 | Attr 4
0 1 0 1
如果我用Attr 1& 1搜索文件Attr 3,我戴着面具:
Attr 1 | Attr 2 | Attr 3 | Attr 4
1 0 1 0
在逻辑AND操作中
答案 0 :(得分:2)
kludge是将位字段转换为数字,然后搜索数值。例如,如果您将“0 1 0 1”转换为“5”,则搜索“5”。但是,如果文档可以具有其他属性,则无法直接查找“使用Attr 4查找所有文档” - 您需要搜索(在查询语法分析器语法中):
+(1 3 5 7 9 11 13 15)
(这假设“Attr 4”成为结果数值中的最低有效位(并且默认运算符为OR)。