Generally, you need to flatten and denormalize your data before you place it
in Solr. But, Solr does have a limited join capability that does handle some
cases reasonably well:
http://wiki.apache.org/solr/Join
For example...
"This Solr request...
/solr/collection1/select ? fl=xxx,yyy & q={!join from=inner_id
to=outer_id}zzz:vvv
Is comparable to this SQL statement...
SELECT xxx, yyy
FROM collection1
WHERE outer_id IN (SELECT inner_id FROM collection1 where zzz = "vvv")
"
This looks reasonably close to your case.
-- Jack Krupansky
-----Original Message-----
From: Ariel Zerbib
Sent: Thursday, April 11, 2013 10:32 AM
To: solr-user@lucene.apache.org
Subject: solr join use case (not in instead of in)
Solr has implemented from version 4 the !join query.
I'd like to know if the following case is possible.
For example, we have documents of the following form:
doc1:
field1:123
field2:A
field3:456
doc2:
field1:123
field2:B
field3:789
doc3:
field1:23456
field2:A
field3:264
We need to retrieve all the documents that the field field2 equals to
B and no other document with the same field field1 value containing
the field field2 with value A.
In SQL this can be done with the operation "not in": select * from doc
where field2 = 'B' and field1 not in (select field1 from doc where
field2 = 'A')
The join operator is the equivalent of the SQL in operator.
Can we use the solr join or another function to implements our needs?
Thanks