2

ビットマップ フィールドを lucene に格納し、ビット マスク操作を使用して検索する方法はありますか?

私はオブジェクトに多くのブール属性を持っており、それぞれに個別のフィールドを持つ代わりに、すべての属性をビットとしてビットマップに格納し、ビットマスクを使用して検索する方法があるかどうかを検討しています。

フィールド値は次のようになります。

Attr 1 | Attr 2 | Attr 3 | Attr 4
  0        1        0        1

Attr 1 と Attr 3 のドキュメントを検索する場合は、次のようにマスクします。

Attr 1 | Attr 2 | Attr 3 | Attr 4
  1        0        1        0 

論理 AND 演算で

4

1 に答える 1

2

コツは、ビット フィールドを数値に変換してから、数値を検索することです。たとえば、「0 1 0 1」を「5」に変換した場合、「5」で検索します。ただし、ドキュメントが他の属性を持つことができる場合、これは「属性 4 のすべてのドキュメントを検索する」には直接機能しません。(クエリ パーサー構文で) 検索する必要があります。

+(1 3 5 7 9 11 13 15)

(これは、"Attr 4" が結果の数値の最下位ビットになることを前提としています (デフォルトの演算子は OR です))。

于 2013-08-16T18:46:23.130 に答える