SolrJ - 索引多个类并确保文档唯一性

时间:2013-02-22 17:45:25

标签: solr indexing uuid solrj

我想使用SolrJ来索引一组Java类。每个类实例由其id确定,该id在类中是唯一的。但是,通过使用Solr @Field批注从这些类生成Solr文档,结果证明此批注不保证存储在Solr索引中的已创建文档的唯一性(相同的id值可能属于多个类)。

我尝试将注释方法与Solr UUID数据类型结合使用,以便在solr架构中的指定字段中生成唯一的id值,但没有成功。

因此,我创建了一个简单的注释机制,与SolrJ没有太大不同,它保证了多个类的唯一性。这是通过组合对象类名和它的id来获得一种UUID,然后存储在Solr模式中。

我不确定我是否遗漏了某些东西,所以我想知道上述工作方案对我的情况是否足够好,或者是否有更清洁/更好的选择。

2 个答案:

答案 0 :(得分:2)

我认为这是一种有效的方法。我们在我们的位置做了类似的多个索引。例如,我们在数据库中有4种不同类型的项目,我们将它们加载到索引中的公共模式中,并且我们在数据库表id前面加上该类型的前两个唯一字母,以确保它是唯一的。

同样,IMO,在一个索引中索引多个不同类型实际上是一种偏好,而不是经验法则,如下面的链接所示

答案 1 :(得分:0)

通常,一个POJO将对应于一个模式和一个Solr核心。我不确定你为什么要将不同的POJO索引到一个Solr核心。

但话说回来,你的班级方法应该可以正常工作。否则,您可以在每个类中声明一个静态CLASS_ID字段,为不同的类保持不同,并通过连接id:CLASS_ID来形成Solr文档ID。