【发布时间】:2016-05-31 16:40:18
【问题描述】:
我在 5.0.0.Final 版本中使用 Hibernate Search。 我在 1 个表中索引了 1 个字段。我正在使用 FieldBridge 来索引该字段:
public class CustomBridge implements FieldBridge {
@Override
public void set(String name, Object value, Document document, LuceneOptions luceneOptions) {
MyFieldType file = (ProductOrderJsonEntity) value;
if (file.getA() != null && file.getB() != null) {
luceneOptions.addFieldToDocument(name + ".ABconcat", file.getA() + file.getB(), document);
}
}
}
我正在使用 FieldBridge 索引数据库中不存在的字段,所以当我尝试进行这样的查询时,它会崩溃:
EntityManager em = entityManagerFactory.createEntityManager();
FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search.getFullTextEntityManager(em);
em.getTransaction().begin();
QueryBuilder qb = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(MyEntity.class).get();
org.apache.lucene.search.Query luceneQuery = qb.keyword().onFields("productOrder.internalReference", "techId").matching(keyword).createQuery();
javax.persistence.Query jpaQuery = fullTextEntityManager.createFullTextQuery(luceneQuery, MyEntity.class);
...出现以下错误:
org.hibernate.search.exception.SearchException: Unable to find field field.ABconcat in com.something.myapp.MyEntity
显然它试图将我在 luceneQuery 中提供的字段映射到 Object 字段(在我的例子中是 MyEntity)。
有没有办法查询数据库中不存在的自定义字段的索引?
谢谢。
【问题讨论】:
标签: hibernate lucene hibernate-search