在 Solr 查询中使用内部联接

Posted

技术标签:

【中文标题】在 Solr 查询中使用内部联接【英文标题】:Using inner Join in Solr query 【发布时间】:2014-08-13 08:37:28 【问题描述】:

在 SQL 中,我有这样的查询

选择 * FROM table1 INNER JOIN table2 ON table1.table1To2Id = table2.table2Id 内连接 table3 ON table1.table1To3Id = table3.table3Id

如何使用 Solr 进行相同的查询?鉴于 SQL 中的字段与 Solr 中的字段相同 提前致谢

【问题讨论】:

可能重复:***.com/questions/2636637/solr-join-query?rq=1 我不认为它重复,因为在我的情况下,我不想更改文档结构,它需要在 3 个文档之间进行连接查询 【参考方案1】:

我相信您正在寻找这样的东西:

SQL:

SELECT * 
FROM books 
WHERE id IN (SELECT bookId 
             FROM bookauthors 
             WHERE authorId IN (SELECT authorId 
                                FROM author 
                                WHERE author.name LIKE '%Rowling%'))

Solr(为了便于阅读,拆分为多行):

http://<code>hostname:8983/solr/select?q=*:*&fq= 
!join+from=bookId+to=id
authorId:!join+from=authorId+to=authorId
author.name:Rowling

关键是在:之后传入下一个连接查询,而不是传值。更多信息请参考this

【讨论】:

+1 您引用的参考文献只有几个例子,但没有明确的指南。还有其他地方可以找到 Solr 手册,尤其是。更复杂的功能?谢谢 是否可以更新文档?链接不再有效 @user3166881,谢谢!更新了链接。

以上是关于在 Solr 查询中使用内部联接的主要内容,如果未能解决你的问题,请参考以下文章

带有内部联接的 SQL 更新查询语法

使用内部联接实现联合所有查询

如何将此 SQL 内部联接查询转换为 LINQ 语法?

在 Oracle 上使用内部联接更新语句

在使用 LINQ 的对面到内部联接查询方面需要帮助

使用内部联接删除