lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steven A Rowe <sar...@syr.edu>
Subject RE: Querying across object relationships
Date Thu, 30 Jul 2009 17:13:07 GMT
Hi Donal,

I'm not familiar with Compass annotations, so forgive my ignorance, but it's not clear to
me what your documents look like, or how a Lucene document corresponds to your objects.

What does the document you get as a hit when you search look like?  That is, what fields are
defined on it?

When you look in Luke, what do you see?  Are the documents heterogeneous?  That is, do some
documents have different fields defined on them than others?

Also, you wrote:
> The only reason I was using "AND" in my query, was to be explicit about
> how the predicates should be combined, rather than relying on the
> default (which is in fact "AND").

What you're missing is that Lucene's query syntax does not exactly incorporate Boolean logic.
 See <http://lucene.apache.org/java/2_4_1/queryparsersyntax.html#Boolean%20operators>
for more information; also, there is a discussion on the Lucene wiki that may be useful to
you: <http://wiki.apache.org/lucene-java/BooleanQuerySyntax>.  In particular, using
the "+" operator in front of a term means that it MUST be present; a match will not occur
unless the specified field with a term matching the specified value is present on a document.

So, somehow, the hit you're getting (even though you don't think you should be) matches *both*
courseName:cooking and mandatory:Y.

That is, your problem is one of document structure, not query syntax.  I suspect you'll need
to further investigate how Compass annotations affect document structure to resolve this issue.

Steve

Mime
View raw message