【问题标题】:Can i query 2 distinct collections in Solr query?我可以在 Solr 查询中查询 2 个不同的集合吗?
【发布时间】:2020-08-19 13:34:31
【问题描述】:

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

例如

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

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

结果应该是基于field1的collection 1数据和基于field4的collection 2数据的组合。

【问题讨论】:

  • 是的,您可以使用流式表达式查询
  • 即使建议模式应该相同以进行任何有用的查询,您也可以创建一个由两个集合支持的别名:lucene.apache.org/solr/guide/8_6/aliases.html - 但是,您可能需要至少在两者中都有一个id 字段。如有必要,将相同的字段添加到两个索引(只是为了定义它们),但只使用您需要的文件。

标签: solr solrcloud sunspot-solr


【解决方案1】:

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 Streaming

【讨论】:

  • 问题是,这两个集合都没有任何公共字段。
  • 是否还有其他字段名称不同但具有共同值
  • 否(没有共同值),只是图像数据来自 2 个独立的来源,它们需要显示在一个页面上。
  • 那么它不可能...在 RDBMS 中是否可能...?这没有任何意义......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 2017-02-06
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多