Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using inner Join in Solr query

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

like image 321
Tam Thai Avatar asked Jun 23 '14 10:06

Tam Thai


1 Answers

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

like image 161
Java Developer Avatar answered Sep 23 '22 09:09

Java Developer