Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate搜索如何使Lucene的实体平坦化_Java_Solr_Lucene_Hibernate Search - Fatal编程技术网

Java Hibernate搜索如何使Lucene的实体平坦化

Java Hibernate搜索如何使Lucene的实体平坦化,java,solr,lucene,hibernate-search,Java,Solr,Lucene,Hibernate Search,我想把数以百万计的实体放入Solr中,以便根据它们的字段进行查询(如范围搜索、排序、分组等) 然而,我拥有的实体并不是平面的。它们之间有关系,比如员工有公司,人员有地址,购物车有列表等(注意,所有这些都是实体或数据对象,不能直接放入Solr) 我遇到了Hibernate搜索,它从非平面实体构建Lucene索引。 如果有人能告诉我代码在哪里,那就太好了 我知道这是可行的,因为Elasticsearch也在这样做。 但是,由于离开Solr对我来说可能是一个昂贵的赌注,我想尝试扁平化实体,或者是我自己

我想把数以百万计的实体放入Solr中,以便根据它们的字段进行查询(如范围搜索、排序、分组等)

然而,我拥有的实体并不是平面的。它们之间有关系,比如员工有公司,人员有地址,购物车有列表等(注意,所有这些都是实体或数据对象,不能直接放入Solr)

我遇到了Hibernate搜索,它从非平面实体构建Lucene索引。 如果有人能告诉我代码在哪里,那就太好了

我知道这是可行的,因为Elasticsearch也在这样做。
但是,由于离开Solr对我来说可能是一个昂贵的赌注,我想尝试扁平化实体,或者是我自己,或者是使用HibernateSearch API,Hibernate搜索将实体关联添加为根实体的一部分。假设有一个人通过地址属性与地址有关联。地址有街道和城市物业。Person实例的Lucene文档还将包含一个字段address.street和address.city。要启用此嵌入索引,您需要使用@IndexedEmbedded注释address属性。另请参见搜索的在线文档-

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


这就是你想要的吗?

关系是多对多吗?还是一对多?我们在实体之间至少有一对一和一对多的关系。在不久的将来,多对多还没有被优先考虑。因此,您可以使用BlockJoinQuery。看看这里-它正做着你需要的。哈代,是的,这是非常接近它。然而,我实际上使用Solr来索引我的数据。所以我需要手动展平这些实体。你知道Hibernate搜索中的一些API可以帮助我做到这一点吗?不,没有公开的API可以做到这一点。扁平化是核心搜索引擎的一部分