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 > > > >