0

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

我尝试将注释方法与 Solr UUID 数据类型相结合,以将唯一 id 值生成到 solr 模式中的指定字段中,但没有成功。

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

我不确定我是否没有遗漏任何东西,所以我想知道上述工作解决方案是否适合我的情况,或者是否有任何更清洁/更好的替代方案。

4

2 回答 2

2

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

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

于 2013-02-22T21:07:33.000 回答
0

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

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

于 2013-02-22T20:01:40.953 回答