私たちの製品のすべてのドキュメントの索引があります。ドキュメントフィールドは次のとおりです。
- グループ
- 名前
- バージョン
- ドキュメンテーション
- ...
ほとんどのドキュメンテーションには複数のサイトがあるため、各サイトに対して 1 つのドキュメントをインデックスに作成します。そのため、グループ、名前、およびバージョンで製品を検索すると、いくつかの結果が得られます。しかし、この組み合わせ (グループ、名前、およびバージョン) に対して 1 つの結果のみが必要な場合があります (製品にいくつのドキュメントが存在するかに関係なく)。
そのため、DuplicateFilter を使用しました。
このフィルターは 1 つのフィールドでしか使用できない (フィールドの組み合わせでは使用できない) ため、別のフィールド (productkey) を作成しました。このフィールドには、この製品の ID (グループ、名前、およびバージョン フィールドの組み合わせの md5Hashvalue) を保存しました。次に、このフィールドを使用して重複をフィルタリングするように DuplicateFilter に指示しました。
しかし、期待した検索結果がすべて得られたわけではありません。すなわち:
ドキュメント:
group | name | version | productkey | description
a | one | 1.0 | 808d8f96138b7dec7cc69c2769176424 | ...
a | two | 1.0 | 0225635fc76ed8b88c65c7eb9f2ec1f9 | ...
a | two | 1.0 | 0225635fc76ed8b88c65c7eb9f2ec1f9 | ...
a | three| 1.0 | 621e2597b189ee8d9448f6bfb26c5a8f | ...
a | three| 1.0 | 621e2597b189ee8d9448f6bfb26c5a8f | ...
a | three| 1.0 | 621e2597b189ee8d9448f6bfb26c5a8f | ...
a | three| 1.0 | 621e2597b189ee8d9448f6bfb26c5a8f | ...
a | three| 1.0 | 621e2597b189ee8d9448f6bfb26c5a8f | ...
a | four | 1.0 | 3d03056a0d0f29f63477ee1f130b7ae8 | ...
a | four | 1.0 | 3d03056a0d0f29f63477ee1f130b7ae8 | ...
a | four | 1.0 | 3d03056a0d0f29f63477ee1f130b7ae8 | ...
a | four | 1.0 | 3d03056a0d0f29f63477ee1f130b7ae8 | ...
a | four | 1.0 | 3d03056a0d0f29f63477ee1f130b7ae8 | ...
a | four | 1.0 | 3d03056a0d0f29f63477ee1f130b7ae8 | ...
a | five | 1.0 | b2d49bc320325007e1466a38e41ce69a | ...
a | five | 1.0 | b2d49bc320325007e1466a38e41ce69a | ...
a | five | 1.0 | b2d49bc320325007e1466a38e41ce69a | ...
a | five | 1.0 | b2d49bc320325007e1466a38e41ce69a | ...
a | five | 1.0 | b2d49bc320325007e1466a38e41ce69a | ...
zz | one | 1.0 | b610a470c9a7d2cc928725e1fb1a577a | ...
zz | one | 1.0 | b610a470c9a7d2cc928725e1fb1a577a | ...
zz | one | 1.0 | b610a470c9a7d2cc928725e1fb1a577a | ...
zz | two | 1.0 | f5bb84453af30dd5f229d04cdb787dec | ...
zz | three| 1.0 | 4b86d91feded953e57fb3d1ccbf0fc6e | ...
zz | three| 1.0 | 4b86d91feded953e57fb3d1ccbf0fc6e | ...
zz | three| 1.0 | 4b86d91feded953e57fb3d1ccbf0fc6e | ...
結果:
group | name | version | productkey
a | two | 1.0 | 0225635fc76ed8b88c65c7eb9f2ec1f9
a | three| 1.0 | 621e2597b189ee8d9448f6bfb26c5a8f
zz | two | 1.0 | f5bb84453af30dd5f229d04cdb787dec
だから私はこれらの製品がありません:
group | name | version | productkey
a | one | 1.0 | 808d8f96138b7dec7cc69c2769176424
a | four | 1.0 | 3d03056a0d0f29f63477ee1f130b7ae8
a | five | 1.0 | b2d49bc320325007e1466a38e41ce69a
zz | one | 1.0 | b610a470c9a7d2cc928725e1fb1a577a
zz | three| 1.0 | 4b86d91feded953e57fb3d1ccbf0fc6e
フィルターをインスタンス化するコードは次のとおりです。
DuplicateFilter filter = new DuplicateFilter("productkey");
filter.setKeepMode(DuplicateFilter.KM_USE_FIRST_OCCURRENCE);
filter.setProcessingMode(DuplicateFilter.PM_FULL_VALIDATION);
私は間違いを犯しましたか、それとも duplicateFilter のバグですか (長いフィールド値など)?
Lucene 3.6 を使用しています。