次のような 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 で行う必要がある特別なことはありますか?