0

Lucene または hibernate 検索を使用してカスタム フィールドをインデックス化および検索する方法。カスタム フィールドにインデックスを付ける方法が見つかりません。それらは動的です。

ここでの「カスタム フィールド」は、ユーザーが編集できることを意味し、これらのフィールドはハード コードではありません。

どんな助けでも感謝します!

4

1 に答える 1

0

カスタム フィールドのクエリ

プロジェクション API を使用するだけです。

FullTextQuery hibernateQuery = fullTextSession
     .createFullTextQuery(luceneQuery)
     .setProjection("myField1", "myField2");
List results = hibernateQuery.list();

プロジェクションを使用すると、STORED である限り、任意のフィールドを読み取ることができます。

インデックス付きエンティティのプロパティ名と一致する場合は、適切な型に変換された後に実体化されます (TwoWayFieldBridge がある場合)。そうでない場合は、文字列値を取得します。

何らかの理由でこの変換をバイパスする必要がある場合、または生の Lucene ドキュメントのデコードを楽しみたい場合は、 IndexReaderdirectly を開くことができます。

カスタム フィールドのインデックス作成

FieldBridge を定義すると、インデックス付きのドキュメントに好きなだけフィールドを追加でき、それぞれに好きな名前を付けることができます。メソッドのパラメーターはヒントです。たとえば、フィールド名のスコープを設定するのに役立ちますが、無視することができます。

複数のフィールドを書き込む FieldBridge 実装の例は、ドキュメントの DateSplitBridgeです。

于 2012-10-03T22:10:16.207 に答える