【发布时间】:2014-04-03 11:55:53
【问题描述】:
我是 SolrCloud 的新手 在学习模式下..我想获得多个搜索查询的交集。 我们可以把它看成是多个结果集的内连接。据我所知,这可以通过 - 1) 数据源对之间的多个连接查询。我们甚至可以使用子查询。 2)我正在考虑的更好的选择是编写自定义请求处理程序。此请求处理程序将对每个数据源进行搜索查询并找到它们之间的交集。格式化响应并将其作为最终结果集返回。 我想知道在 Solr 中解决它的最佳方法是什么。我不确定如何在自定义请求处理程序中进行多个搜索查询。 谢谢
【问题讨论】:
-
您能否具体说明“多个查询的交集”是什么意思?因为我可以很容易地假设您在查询中只需要 AND 运算符。或者您是否需要对不同的核心执行不同的查询?只需举一个您要运行的查询的示例。
-
@Emad 例如,我们有 3 个不同的数据源 DS1、DS2、DS3
DS1- {(cust_id1, a1, b1),(cust_id2, a2, b2),(cust_id3, a3, b3)} DS2- {(cust_id1, c1, d1),(cust_id3, c2, d2), (cust_id4, c3, d4)} DS3- {(cust_id1, e1, f1),(cust_id3, e2, f2)} DS4- {(cust_id1, g1, h1),(cust_id2, g2, h2),(cust_id3, g3, h3),(cust_id4, g4, h4)}` output-所有 4 个数据源中的通用 cust_id{(cust1, a1, b1), (cust_id1, c1, d1), (cust_id1, e1, f1), (cust_id1, g1, h1), (cust_id3, a3, b3), (cust_id3, c2, d2), (cust_id3, e2, f2),(cust_id3, g3, h3)}在 SQL 中,例如 DS1 的 INNER JOIN, cust_id 上的 DS2、DS3、DS4。 -
@Emad 我在想一个请求处理程序,它将使 solr 搜索所有 4 个数据源的 qeuery,获取 4 个结果集,然后在所有 4 个结果集中找到共同的 cust_id。格式化输出并返回给最终用户。我们可以在 requestHandler 中做这样的事情吗?我找不到任何显示在请求处理程序中发出 solr 搜索查询请求并处理它们的示例。