Lucene または hibernate 検索を使用してカスタム フィールドをインデックス化および検索する方法。カスタム フィールドにインデックスを付ける方法が見つかりません。それらは動的です。
ここでの「カスタム フィールド」は、ユーザーが編集できることを意味し、これらのフィールドはハード コードではありません。
どんな助けでも感謝します!
Lucene または hibernate 検索を使用してカスタム フィールドをインデックス化および検索する方法。カスタム フィールドにインデックスを付ける方法が見つかりません。それらは動的です。
ここでの「カスタム フィールド」は、ユーザーが編集できることを意味し、これらのフィールドはハード コードではありません。
どんな助けでも感謝します!
カスタム フィールドのクエリ
プロジェクション API を使用するだけです。
FullTextQuery hibernateQuery = fullTextSession
.createFullTextQuery(luceneQuery)
.setProjection("myField1", "myField2");
List results = hibernateQuery.list();
プロジェクションを使用すると、STORED である限り、任意のフィールドを読み取ることができます。
インデックス付きエンティティのプロパティ名と一致する場合は、適切な型に変換された後に実体化されます (TwoWayFieldBridge がある場合)。そうでない場合は、文字列値を取得します。
何らかの理由でこの変換をバイパスする必要がある場合、または生の Lucene ドキュメントのデコードを楽しみたい場合は、 IndexReaderdirectly を開くことができます。
カスタム フィールドのインデックス作成
FieldBridge を定義すると、インデックス付きのドキュメントに好きなだけフィールドを追加でき、それぞれに好きな名前を付けることができます。メソッドのパラメーター名はヒントです。たとえば、フィールド名のスコープを設定するのに役立ちますが、無視することができます。
複数のフィールドを書き込む FieldBridge 実装の例は、ドキュメントの DateSplitBridgeです。