在Solr查询中使用内部连接

时间:2014-06-23 10:27:45

标签: sql join solr lucene inner-join

在SQL中,我有这样的查询

SELECT * 
FROM table1 INNER JOIN table2 ON 
     table1.table1To2Id = table2.table2Id INNER JOIN 
     table3 ON table1.table1To3Id = table3.table3Id

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

1 个答案:

答案 0 :(得分:5)

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

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