Hibernate Search如何为Lucene展平实体

时间:2014-04-02 20:36:06

标签: java solr lucene hibernate-search

我想将数百万个实体放入Solr,以便按字段查询(例如范围搜索,排序,分组等)。

然而,我所拥有的实体并不平坦。他们有像Employee公司,Person有地址,Cart有List等关系。(注意所有这些是实体或数据对象,不能直接放入Solr。)

我遇到了Hibernate Search,它从非平面实体构建Lucene索引。 如果有人能指出我所做的代码,那就太好了。

我知道这是可行的,因为Elasticsearch也在这样做。 但是,因为离开Solr对我来说可能是一个昂贵的赌注,我想尝试通过自己或使用HibernateSearch API来实现扁平化实体

1 个答案:

答案 0 :(得分:2)

Hibernate Search将实体关联添加为根实体的一部分。假设有一个 Person ,它通过地址属性与地址建立关联。 地址具有街道 city 属性。然后, Person 实例的Lucene文档还将包含字段 address.street address.city 。要启用此嵌入式索引,您需要使用 @IndexedEmbedded 注释地址属性。另请参阅搜索的在线文档 - http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#search-mapping-associated

技术上,Hibernate Search保留实体的索引属性(包括关联)所需的元信息,以及实体更改事件(或关联的更改)重建文档/索引。

这是你追求的吗?