以电子商务商店为例,该商店在不同的 Web 服务中具有目录和价格数据。现在,我们知道 solr 不允许对文档字段进行部分更新(JIRA 错误),那么您如何索引这两个服务呢?我有三种可能性,但我不确定哪一种是正确的:
- 部分更新 - 不可能
Solr 加入 - 将价格和目录放在单独的索引中,并将它们加入solr。您不能将它们加入您的客户端代码,而不会搞砸分页和方面计数。我不知道这在 pre-solr 4.0 中是否可行
有某种中间索引服务,它根据这两个服务的结果组成整个文档并将其发送以进行索引。但是这种方法有两个问题:
3.1 您仍然可以部分地撰写文档,然后当文档完成时,您可以设置一个标志,表明这是一个完整的文档。但是,每次必须对文档进行索引时,都必须先检查该文档是否存在于索引中,然后对其进行编辑并将其推回。因此,性能受到很大影响。3.2 你的中间服务检查一个特定的 id 是否可以从所有的服务中获得——如果不是静默地丢弃它,并希望当它出现在另一个服务中时,第一个服务已经被填充。这没关系,但这意味着在所有字段都可用之前,搜索中的项目不可用(总是不可取 - 如果您没有价格,您可以简单地将其设置为缺货并仍然可用)
在所有这些方法中,只有#3.2 对我来说是可行的——有人知道你是如何用 DIH 做这种事情的吗?因为现在,您有两个不同的入口点(2 个不同的 Web 服务)进入索引,并且每个都必须检查另一个