lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Bamford <chris.bamf...@talktalk.net>
Subject Re: More questions on BlockJoinQuery
Date Wed, 20 Feb 2013 15:48:22 GMT

 Thanks Mike.
I have downloaded the source tarball for 4.1.0 and have tried to get it working, but am having
a few problems getting it to fit with my environment (intelliJ / Maven).
Where is the best forum to discuss such issues?

Chris

 

 

-----Original Message-----
From: Michael McCandless <lucene@mikemccandless.com>
To: java-user@lucene.apache.org
Sent: Tue, 12 Feb 2013 15:17
Subject: Re: More questions on BlockJoinQuery


On Tue, Feb 12, 2013 at 7:43 AM, Chris Bamford
<chris.bamford@talktalk.net> wrote:

>> Could you please send this to the java-user@lucene.apache.org list?
>
> I thought I did!  :-)  Here it is again:

Duh, my bad :)  You are right!

I saw the "Hi Mike" and stopped there!

Responses below:

> I have a question about your post "Searching relational content with Lucene's
> BlockJoinQuery"
> (http://blog.mikemccandless.com/2012/01/searching-relational-content-with.html).
> I am actually trying to use Lucene 4.0.0, so am having to translate your 
example to
> the newer ToParentBlockJoinQuery / ToChildBlockJoinQuery APIs.  I have had 
some success,
> but my ultimate goal of combining the info from both child and parent hits is 
eluding
> me.  I  suspect I am missing something, but as yet haven't figured out what!
>
> In this scenario, let's say I have the following relationship:
>
> child 1 :   ref:"100", content:"child 1", type:"C"
> child 2 :   ref:"200", content:"child 2", type:"C"
> child 3 :   ref:"300", content:"child 3", type:"C"
> parent  :   ref:"400", content:"parent", type:"P"
>
> When one or more children are hit, I want that to be noted against the parent,
> so ultimately I can create a result object like:
>
> Result{ ref:400, content:"parent", matches: [100, 300] }  // children 1 & 3
> were hit
>
> I have followed your example closely just replacing BlockJoinQuery with
> ToParentBlockJoinQuery and BlockJoinCollector with ToParentBlockJoinCollector.
> Unfortunately I seem to be able to get either:
>
> Just the parent objects (with td=s.search(q, 10)) or just the children (with 
the
> Collector),  but not both!
>
> Am I to call search() twice (one returning TopDocs and the other GroupDocs via
> the Collector) and join them myself?  Or does one of these calls return me 
both
> types of documents, grouped and sorted?

You should only call IndexSearcher.search once, but you should pass
your ToParentBlockJoinCollector instance IS.search(query, collector),
and then you call collector.getTopGroups to get the parent & children.

Maybe have a look @ the unit test to get ideas?

  https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_1/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java

BTW you should upgrade to 4.1.0!

Mike McCandless

http://blog.mikemccandless.com

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


 

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message