首页 > 解决方案 > 我可以在 Solr 查询中查询 2 个不同的集合吗?

问题描述

我有一个要求,我需要在页面上显示两个不同 solr 集合的数据。但是这两个集合没有任何共同的领域或关系。

例如

`Collection 1 fields -> field1(unique key), feild 2, field 3`

Collection 2 fields -> field4(unique key), feild 5

结果应该是基于字段 1 的集合 1 数据和基于字段 4 的集合 2 数据的组合。

标签: solrsolrcloudsunspot-solr

解决方案


innerJoin 包裹两个流,左和右。对于 Left 中存在于 Right 中的每个元组,将发出一个包含两个元组的字段的元组。这支持一对一、一对多、多对一和多对多的内部连接方案。元组按照它们在左流中出现的顺序发出。两个流都必须按用于确定相等性的字段(“on”参数)进行排序。如果两个元组都包含同名字段,则来自 Right 流的值将用于发出的元组中。您可以使用 select(...​) 表达式包装传入的流,以具体说明哪些字段值包含在发出的元组中

您可以使用 Solr Streaming 表达式。

innerJoin(
  search(Collection1, q="*:*", qt="/export", fl="field1, fields2", sort="commonField asc"),
  search(Collection2, q="*:*", qt="/export", fl="field3, fields4", sort="commonField  asc"),
  on="commonField "
)

请参阅 solr 链接以获取有关同一 Solr 流式传输的更多选项


推荐阅读