1

Lucene3.6.1を使用しています。

Luceneがこの用語を保持しているドキュメントを実際に検索する前に、用語の値(Term.text())を変更する方法があるかどうか知っていますか?

インデックスに書き込まれるときに値が暗号化されるため、この前処理が必要です。ただし、この用語で検索する場合は、あいまい検索や近似検索を行う必要があります。

よろしくお願いします。

4

1 に答える 1

1

インデックスに保存されている値を見つける前に変更したいですか?いいえ、それは意味がありません。

暗号化されたデータをインデックスに保存する場合は、暗号化されたデータを使用して検索する必要があります。適切なテキスト検索を利用できるようにする必要がある場合は、暗号化されていない形式でインデックスを作成する必要があります。テキスト検索に適した何らかの暗号化を使用していない限り、私は推測します。単純な暗号か何かであれば、インデックス値とクエリの両方を暗号化して、問題なく検索できると思います。それを除けば、暗号化されたデータに対してあいまい検索を採用することは実現可能ではないと思います。

私の推奨事項:

暗号化されていない形式のフィールドにインデックスを付けることはできますが、保存することはできません。これにより、必要に応じて検索を利用できます。

次に、暗号化されたフィールドを格納するフィールドを作成して、フィールドの取得可能なバージョンを格納できます。そのフィールドにインデックスを付けるかどうかは、暗号化されたデータを使用して検索できるかどうかによって異なりますが、そうではないと思います。

何かのようなもの:

Document.add(new Field('fieldname', value, Field.Store.NO, Field.Index.ANALYZED);
Document.add(new Field('fieldnameencrypted', value, Field.Store.YES, Field.Index.NO);

検索できるのはフィールド名のみですが、見つかったドキュメント(暗号化された形式)から取得できるのは暗号化されたフィールド名のみです。

于 2012-12-07T17:13:34.163 に答える