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:[email protected]]
> Sent: Thursday, July 30, 2009 3:10 PM
> To: [email protected]
> 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
>
>
>
>