我已实现了一个实现ClassBridge
的自定义StringBridge
。
public class AClassBridge implements StringBridge {
public String objectToString(Object object) {
....
}
@Entity
.....
@ClassBridge(
name="allTitles",
index=Index.YES,
store=Store.NO,
impl=AClassBridge.class),
private class .... {
....
当我索引我的entites时,这个Bridge被调用,这是预期的,但当我在我的lucene搜索查询中使用与此ClassBridge相关联的字段名称进行搜索时。
"bq.add(new
BooleanClause(qb.keyword().onFields("allTitles").matching(searchText).createQuery(),
BooleanClause.Occur.MUST));".
再次调用类Bridge
。
实施org.hibernate.search.bridge.StringBridge
时这是正确的行为,
或者只应在索引时调用Bridge。
感谢你,
答案 0 :(得分:0)
是的,这是预期的, matching()方法要求您传递Object而不是String,它将尝试使用定义的桥将参数转换为String。
您可以使用 ignoreFieldBridge()禁用它,这表示您希望直接传递文本。