我有一个看起来像这样的 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) );
...
... thenFullTextQuery
启用此过滤器后,将按预期工作。
但是,如果我将过滤器更改为使用嵌入字段的字段:
...
Term term = new Term("children.name", "Junior");
Query query = new TermQuery(term);
return new CachingWrapperFilter( new QueryWrapperFilter(query) );
...
...然后我每次都得到 0 次点击,尽管搜索表达式children.name:parent=junior
在 Luke 中工作得很好。
我在这里缺少什么吗?显然信息就在那里,因为我可以在 Luke 中搜索它。FullTextFilter
对于像这样的嵌入式字段,而不是简单的字段,您与 Hibernate Search 有什么特别的关系吗?