lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Erick Erickson" <>
Subject Re: lucene search options
Date Mon, 08 Dec 2008 16:40:42 GMT
That'll teach me to scan e-mail. You can't use MatchAllDocsQuery
that way.
What you're actually searching for is the word "matchalldocsquery"
in the field "summary". Which returns nothing. Then you're subtracting
any documents with reporter *mark*. That isn't what you're after at all.

If you're doing this programmatically, you want something in the
Lucene code like:

BooleanQuery bq = new BooleanQuery()
bq.add(new MatchAllDocsQuery(), BooleanClause.occur.MUST)
bq.add(<parsed *mark* query here>, BooleanClause.occur.MUST_NOT)

now pass bq to the search method. This will require some work on your
part to detect when it's appropriate and when it's not. But presumably you
have the ability to know that.

I've seen referenced (but haven't used) something like
reporter:(* TO *) -reporter:*mark*

WARNING: I've seen this referenced in, I believe, the SOLR mailing
list. I don't know how it plays in straight Lucene,and I have no idea
what the gotcha's are, nor what version of Lucene supports this syntax
efficiently. Furthermore I'm unclear what the behavior for
a document without the reporter field is......

But I do know that you can't do what your example does....


On Mon, Dec 8, 2008 at 10:24 AM, no spam <> wrote:

> The reason our users want to do this is because they want to search for
> instances where certain negative conditions are true.  My client is the
> news
> industry and this is metadata for things like reporter, type, etc.
>  Sometimes you want -reporter:mark for example and this is the only
> criteria
> to search against the index.
> Am I thinking about this wrong?
> I did try using the MatchAllDocsQuery class and it expands to something
> like
> this:
> summary:matchalldocsquery -reporter:*mark*
> but I don't get any results which is not what I expect for my does not
> contain query above.
> On Sat, Dec 6, 2008 at 11:06 PM, Anshum <> wrote:
> > Hi,
> >
> > An easy way to do that would be to index a particular term with all docs
> > e.g. "dummyword" could be indexed for all documents as a value for a
> > dummyfield or an existing field.
> > This way lets assume you want to fetch results for -filed1:jakarta
> > You could search for dummyfield:"dummyword" AND NOT filed1:jakarta
> >
> > This is just one of the solution, though I still would not understand if
> > there's a logical reason for fetching such results.:)
> >
> > --

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