次のような Hibernate Search エンティティ クラスがあります。
@Entity
@Indexed
@FullTextFilterDefs({
@FullTextFilterDef(name="myFilter", impl=MyFilterFactory.class)
})
public class Parent {
...
@Column
@Field
private String name;
@ManyToMany
@IndexedEmbedded
private Set<Child> children;
...
}
関連付けられたエンティティも同様に簡単です。
@Entity
@Indexed
public class Child {
...
@Column
@Field
private String name;
@ManyToMany(mappedBy="children")
@ContainedIn
private Set<Parent> parents;
...
}
MyFilterFactory.getFilter()
メソッドが次のような単純なフィールドで動作している場合Parent
(図を簡単にするためにハードコーディングされています):
...
Term term = new Term("name", "daddy");
Query query = new TermQuery(term);
return new CachingWrapperFilter( new QueryWrapperFilter(query) );
...
...その後FullTextQuery
、このフィルターを有効にすると、期待どおりに機能します。
ただし、埋め込みフィールドのフィールドを使用するようにフィルターを変更すると、次のようになります。
...
Term term = new Term("children.name", "Junior");
Query query = new TermQuery(term);
return new CachingWrapperFilter( new QueryWrapperFilter(query) );
...
children.name:parent=junior
...その後、検索式が Luke で問題なく機能するという事実にもかかわらず、毎回 0 ヒットを取得します。
私がここに欠けているものはありますか?ルークで検索できるので、明らかに情報があります。FullTextFilter
単純なフィールドではなく、このような埋め込みフィールドに対して実装するために、Hibernate Search で行う必要がある特別なことはありますか?