Hi Yonik

Sorry for my late reply. I have been trying to get to the bottom of this
but I'm getting inconsistent behaviour. Here's an example:

Query = "pi:rcs100"     -       Here going to use "pid_rcs" as join
value

<result name="response" numFound="1" start="0">
 <doc>
  <str name="pi">rcs100</str> 
  <str name="ct">rcs</str> 
  <str name="pid_rcs">G1</str> 
  <str name="name_rcs">Emerging Market Countries</str> 
  <str name="definition_rcs">All business events relating to companies
and other issuers of securities.</str> 
  </doc>
  </result>
  </response>

Query = "code:G1"       -       See how many docs have "G1" in their
code field. Notice that "code" is multi valued 

- <result name="response" numFound="2" start="0">
- <doc>
  <str name="ct">cat</str> 
  <date name="maindocdate">2011-04-22T05:48:57Z</date> 
  <str name="pi">nCIF3wGpXk+1029782</str> 
- <arr name="code">
  <str>G1</str> 
  <str>G7U</str> 
  <str>GK</str> 
  <str>ME7</str> 
  <str>ME8</str> 
  <str>MN</str> 
  <str>MR</str> 
  </arr>
  </doc>
- <doc>
  <str name="ct">cat</str> 
  <date name="maindocdate">2011-04-22T05:48:57Z</date> 
  <str name="pi">nCIF7YcLP+1029782</str> 
- <arr name="code">
  <str>G1</str> 
  <str>G7U</str> 
  <str>GK</str> 
  <str>ME7</str> 
  <str>ME8</str> 
  <str>MN</str> 
  <str>MR</str> 
  </arr>
  </doc>
  </result>
  </response>

Now for the join: http://10.15.39.137:8983/solr/file/select?q={!join
from=pid_rcs to=code}pi:rcs100

- <result name="response" numFound="3" start="0">
- <doc>
  <str name="ct">cat</str> 
  <date name="maindocdate">2011-04-22T05:48:57Z</date> 
  <str name="pi">nCIF3wGpXk+1029782</str> 
- <arr name="code">
  <str>G1</str> 
  <str>G7U</str> 
  <str>GK</str> 
  <str>ME7</str> 
  <str>ME8</str> 
  <str>MN</str> 
  <str>MR</str> 
  </arr>
  </doc>
- <doc>
  <str name="ct">cat</str> 
  <date name="maindocdate">2011-04-22T05:48:57Z</date> 
  <str name="pi">nCIF7YcLP+1029782</str> 
- <arr name="code">
  <str>G1</str> 
  <str>G7U</str> 
  <str>GK</str> 
  <str>ME7</str> 
  <str>ME8</str> 
  <str>MN</str> 
  <str>MR</str> 
  </arr>
  </doc>
- <doc>
  <str name="ct">cat</str> 
  <date name="maindocdate">2011-04-22T05:48:58Z</date> 
  <str name="pi">nCN1763203+1029782</str> 
- <arr name="code">
  <str>A2</str> 
  <str>A5</str> 
  <str>A9</str> 
  <str>AN</str> 
  <str>B125</str> 
  <str>B126</str> 
  <str>B130</str> 
  <str>BL63</str> 
  <str>G41</str> 
  <str>GK</str> 
  <str>MZ</str> 
  </arr>
  </doc>
  </result>
  </response>

So as you can see I get back 3 results when only 2 match the criteria.
i.e. docs where G1 is present in multi valued "code" field. Why should
the last document be included in the result of the join?

Thank you,

Matt


-----Original Message-----
From: ysee...@gmail.com [mailto:ysee...@gmail.com] On Behalf Of Yonik
Seeley
Sent: 01 August 2011 18:28
To: solr-user@lucene.apache.org
Subject: Re: Joining on multi valued fields

On Mon, Aug 1, 2011 at 12:58 PM,  <matthew.fow...@thomsonreuters.com>
wrote:
> I have been using the JOIN patch
> https://issues.apache.org/jira/browse/SOLR-2272 with great success.
>
> However I have hit a case where it doesn't seem to be working. It
> doesn't seem to work when joining to a multi-valued field.

That should work (and the unit tests do test with multi-valued fields).
Can you come up with a simple example where you are not getting the
expected results?

-Yonik
http://www.lucidimagination.com

This email was sent to you by Thomson Reuters, the global news and information 
company. Any views expressed in this message are those of the individual 
sender, except where the sender specifically states them to be the views of 
Thomson Reuters.

Reply via email to