是否有更好的方法在SOLR中的字段级别上表示provnenace

时间:2014-12-29 18:12:05

标签: solr

我在SOLR中有文档,其中包含值来自不同源系统的字段。我这样做的原因是因为这个文件是我想从SOLR搜索返回的内容,包括点击突出显示等功能。据我所知,如果我使用多个SOLR文档连接,就无法获得相关文档中匹配的内容。我的文档包含以下字段:

id => unique entity id
type => entity type
name => entity name
field_1_s => dynamic field from system A
field_2_s => dynamic field from system B
...

现在,我的问题出在其中一个源系统中更新数据时。我需要更新或删除与该源系统对应的字段,并保持其他字段不变。我的想法是对动态字段名称进行编码,字段名称的第一部分是表示源系统的8字符哈希。这样,它们可以在唯一源哈希之外具有公共字段名称。通过这种方式,如果需要,我可以轻松清除所有以源前缀开头的字段。

这听起来像我应该做的事情,还是其他人尝试过的其他方式?

1 个答案:

答案 0 :(得分:0)

根据我们的经验,实现这类内容的最简单且最不容易出错的方法是直接构建生成的文档,然后使用重建索引时检索到的两个子系统的数据重新索引整个文档。跟踪字段名称和字段删除往往涉及许多业务规则,这些规则位于您通常使用它们之外的位置。

通过专注于使索引特定文档的任务变得简单和高效,您将使系统在未来的其他问题上更加灵活(从Solr检索具有特定值的所有文档,然后触发从实用程序脚本中重新索引这些文档等。)。

这样,您的应用程序和主索引代码也具有相同的索引流,因此您不必维护多组索引代码来执行不同的操作。

如果您在查询所需文档数量时无法执行查询的系统,则可以添加本地缓存(在SQL,memcached或类似内容中)以加快进程,但该代码可以特定于索引过程。通常子系统的性能足够高(至少如果根据正在更新的文档进行批量检索)。