lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jack Krupansky" <j...@basetechnology.com>
Subject Re: solr join use case (not in instead of in)
Date Thu, 11 Apr 2013 16:24:21 GMT
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 


Mime
View raw message