Hi Donal,

I looked at the XML index dump you provided, and I can see that there is only 
one document in the index.  This document matches your query.  I've pasted it 
below, without the "$/*"-named fields I'm assuming Compass adds to manage 
Lucene document -> Grails object mapping, and with just the "name" attribute on 
the field elements:

  <doc id='1'>
    <field name='courseName'>
      <val>cooking</val>
      <val>art</val>
    </field>
    <field name='mandatory'>
      <val>N</val>
      <val>Y</val>
    </field>
    <field name='name'>
     <val>Bob</val>
    </field>
  </doc>

Compass's Lucene document to Grails object mapping is your problem here.

In Lucene-land, the query (+courseName:cooking +mandatory:Y) matches the above 
document, because the document contains those values in those fields.

So with that query, based on the Lucene document structure, you seem to be 
asking the question: "Which student attends a cooking course and also attends a 
mandatory course?".  Bob is a match.

Steve

> -----Original Message-----
> From: Donal Murtagh [mailto:domur...@yahoo.co.uk]
> Sent: Thursday, July 30, 2009 3:10 PM
> To: java-user@lucene.apache.org
> Subject: Re: Querying across object relationships
> 
> Basically the classes I'm indexing have the following relationships:
> 
> Student 1------* Attendance 1------* Course
> 
> The
> only root class is Student, i.e. only instances of this class can be
> returned from a search. I have a Student object graph that could be
> represented in JSON as follows:
> 
> {
>   name: Bob,
>   attendances: [
>     {mandatory: N, course: {name: cooking}},
>     {mandatory: Y, course: {name: art}}]
> }
> 
> When I search for an instance of Student using the query:
> 
>   "+courseName:cooking +mandatory:Y"
> 
> Bob
> is returned because, because he attends a course named "cooking" and he
> attends a mandatory course (named "art).. But what I really want to
> search for is students that attend a mandatory cooking course. It
> doesn't appear to be possible to do this based on the responses
> provided here:
> http://stackoverflow.com/questions/1202422/lucene-query-
> syntax/1203186#1203186
> 
> I
> opened the Student index in Luke, exported it to XML and have appended
> the results here:
> http://pastebin.com/m6e5bbcf3
> 
> I don't really know how to interpret this
> myself, but thanks in advance for any further help you can provide.
> 
> - Don
> 
> 
> 
> 

Reply via email to