LUCENE-2756: add de morgan test (against IS w/ ES)

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1055652 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael McCandless 2011-01-05 21:39:42 +00:00
parent 9557559df0
commit 84b4473205
1 changed files with 52 additions and 4 deletions

View File

@ -17,13 +17,21 @@ package org.apache.lucene.search;
* limitations under the License. * limitations under the License.
*/ */
import org.apache.lucene.index.IndexReader; import java.util.concurrent.ExecutorService;
import org.apache.lucene.index.RandomIndexWriter; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document; import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field; import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.MultiReader;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.store.Directory; import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase; import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.index.Term; import org.apache.lucene.util.NamedThreadFactory;
public class TestBooleanQuery extends LuceneTestCase { public class TestBooleanQuery extends LuceneTestCase {
@ -116,5 +124,45 @@ public class TestBooleanQuery extends LuceneTestCase {
w.close(); w.close();
dir.close(); dir.close();
} }
public void testDeMorgan() throws Exception {
Directory dir1 = newDirectory();
RandomIndexWriter iw1 = new RandomIndexWriter(random, dir1);
Document doc1 = new Document();
doc1.add(newField("field", "foo bar", Field.Index.ANALYZED));
iw1.addDocument(doc1);
IndexReader reader1 = iw1.getReader();
iw1.close();
Directory dir2 = newDirectory();
RandomIndexWriter iw2 = new RandomIndexWriter(random, dir2);
Document doc2 = new Document();
doc2.add(newField("field", "foo baz", Field.Index.ANALYZED));
iw2.addDocument(doc2);
IndexReader reader2 = iw2.getReader();
iw2.close();
QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "field", new MockAnalyzer());
qp.setMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
MultiReader multireader = new MultiReader(reader1, reader2);
IndexSearcher searcher = new IndexSearcher(multireader);
assertEquals(0, searcher.search(qp.parse("+foo -ba*"), 10).totalHits);
final ExecutorService es = Executors.newCachedThreadPool(new NamedThreadFactory("NRT search threads"));
searcher = new IndexSearcher(multireader, es);
if (VERBOSE)
System.out.println("rewritten form: " + searcher.rewrite(qp.parse("+foo -ba*")));
assertEquals(0, searcher.search(qp.parse("+foo -ba*"), 10).totalHits);
es.shutdown();
es.awaitTermination(1, TimeUnit.SECONDS);
multireader.close();
reader1.close();
reader2.close();
dir1.close();
dir2.close();
}
} }