I think I've discovered a bug. I've opened the following issue:-
with a test case class and the following description:-
If you do a search for a negative wildcard query on a MultiSearcher where one of the searchers is empty e.g. "lucene -bug*" the hits returned incorrectly include articles with words that should be eliminated, e.g. "bug" and "bugs". This is because the query expansion is done on the index with docs in and the empty ndex separately and then combined as an OR to be run on the MultiSearcher. This incorrectly lets in docs that have the excluded wildcard terms, e.g. "bug" nd bugs". This bug would also show up with two indexes full of docs, and I can send a test to show that if required, but I think this test demonstrates the bug in the implest way.

The attached class TestMultiSearcherNegativeWildcardQueryExpansion.java can be put in with other tests in org.apache.lucene.search and run and will fail, showing the bug exists.

I have tested this bug with the currently unreleased 2.3.2 and the released 2.1 and 2.3.1 and it fails on all.

With lucene-1.5-rc1 it passes (with mods to make it work with old API) see TestMultiSearcherNegativeWildcardQueryExpansionWorksWith151.java attachment.


Please contact me if you need any further clarification.