私には2つのクラスがあります。
public Class Student
{
//primary key
private String id;
private String name;//name = Jonathan
....
private List<CustomField> customFields;
}
public Class CustomField
{
//primary key
private String id;
private String fieldName;
....
private String fieldValue;
}
customFieldsはユーザーによって定義され、任意のフィールドと値にすることができます。例:customFieldsリストには2つのオブジェクトがあります。それらは[id=001、fieldName = age、value = 30] [id = 002、fieldName = score、value=90]です。(また、ユーザーはcustomFieldsリストに必要なフィールドを追加/更新できます。customFieldsは動的です)
したがって、クラス「Student」が私のWebページに送信すると、Webページに次のように表示されます:名前:[ジョナサン]年齢:[30]スコア:[90]。
ユースケース:ユーザーは、名前、年齢、スコアのフィールドで検索できます。したがって、これらのフィールドはLuceneDocumentにインデックス付けする必要があります。Hibernate検索を使用してカスタムフィールドにインデックスを付ける場合、動的フィールドのインデックスアノテーションを作成するにはどうすればよいですか?
したがって、Hibernate Searchを使用して動的customFieldsにインデックスを付けて検索する必要がありますが、それを実装できますか?分かりますか?
編集:
public class CustomFieldBriddge implements FieldBridge
{
public void set(String name, Object value, Document document, LuceneOptions luceneOptions)
{
Field.Store store = luceneOptions.getStore();
Field.Index index = luceneOptions.getIndex();
Field.TermVector termVector = luceneOptions.getTermVector();
Float boost = luceneOptions.getBoost();
if (value != null)
{
List<CustomField> customFields = (List) value;
for (CustomField customField : customFields)
{
String fieldName = customField.getFiledName();
String fieldValue = customField.getFiledValue();
Field field = new Field(fieldName, fieldValue, store.YES, index.NOT_ANALYZED,
termVector); // is the field will index into Lucene document one by one?and it can be searched out? right?
field.setBoost(boost);
document.add(field); // is this operation will index the field into Lucuene Document?
}
}
}