12

In SQL, I have the query like this

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

How can I make the same query using Solr? Given that the field in SQL is the same field in Solr
Thank in advance

Tam Thai
  • 133
  • 1
  • 1
  • 6
  • possible duplicate : http://stackoverflow.com/questions/2636637/solr-join-query?rq=1 – omu_negru Jun 23 '14 at 10:46
  • I don't think it duplicates, since in my cases, I don't want to change the document structure, and it requires join query between 3 documents – Tam Thai Jun 24 '14 at 02:30

1 Answers1

17

I believe you are looking for something like this:

SQL:

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

Solr (split to multiple lines for readabilty):

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

The key is to pass in the next join query after : instead of passing the value. For more information refer to this

Java Developer
  • 246
  • 3
  • 8