使用Lucene进行Hibernate搜索

时间:2014-07-10 02:18:33

标签: java hibernate lucene hibernate-search

我已实现了一个实现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。

感谢你,

1 个答案:

答案 0 :(得分:0)

是的,这是预期的, matching()方法要求您传递Object而不是String,它将尝试使用定义的桥将参数转换为String。

您可以使用 ignoreFieldBridge()禁用它,这表示您希望直接传递文本。