private void LogResult(System.String msg, IndexSearcher s, Query q, int doc, float score1) { QueryUtils.Check(q, s); Log(msg + " " + score1); Log("Explain by: " + q); Log(s.Explain(q, doc)); }
public virtual void TestSimple() { Directory dir = NewDirectory(); RandomIndexWriter iw = new RandomIndexWriter( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, dir); Document doc = new Document(); Field field = NewTextField("foo", "", Field.Store.NO); doc.Add(field); Field dvField = new SingleDocValuesField("foo_boost", 0.0F); doc.Add(dvField); Field field2 = NewTextField("bar", "", Field.Store.NO); doc.Add(field2); field.SetStringValue("quick brown fox"); field2.SetStringValue("quick brown fox"); dvField.SetSingleValue(2f); // boost x2 iw.AddDocument(doc); field.SetStringValue("jumps over lazy brown dog"); field2.SetStringValue("jumps over lazy brown dog"); dvField.SetSingleValue(4f); // boost x4 iw.AddDocument(doc); IndexReader ir = iw.GetReader(); iw.Dispose(); // no boosting IndexSearcher searcher1 = NewSearcher( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif ir, false); Similarity @base = searcher1.Similarity; // boosting IndexSearcher searcher2 = NewSearcher( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif ir, false); searcher2.Similarity = new PerFieldSimilarityWrapperAnonymousInnerClassHelper(this, field, @base); // in this case, we searched on field "foo". first document should have 2x the score. TermQuery tq = new TermQuery(new Term("foo", "quick")); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, tq, searcher1); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, tq, searcher2); TopDocs noboost = searcher1.Search(tq, 10); TopDocs boost = searcher2.Search(tq, 10); Assert.AreEqual(1, noboost.TotalHits); Assert.AreEqual(1, boost.TotalHits); //System.out.println(searcher2.Explain(tq, boost.ScoreDocs[0].Doc)); Assert.AreEqual(boost.ScoreDocs[0].Score, noboost.ScoreDocs[0].Score * 2f, SCORE_EPSILON); // this query matches only the second document, which should have 4x the score. tq = new TermQuery(new Term("foo", "jumps")); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, tq, searcher1); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, tq, searcher2); noboost = searcher1.Search(tq, 10); boost = searcher2.Search(tq, 10); Assert.AreEqual(1, noboost.TotalHits); Assert.AreEqual(1, boost.TotalHits); Assert.AreEqual(boost.ScoreDocs[0].Score, noboost.ScoreDocs[0].Score * 4f, SCORE_EPSILON); // search on on field bar just for kicks, nothing should happen, since we setup // our sim provider to only use foo_boost for field foo. tq = new TermQuery(new Term("bar", "quick")); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, tq, searcher1); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, tq, searcher2); noboost = searcher1.Search(tq, 10); boost = searcher2.Search(tq, 10); Assert.AreEqual(1, noboost.TotalHits); Assert.AreEqual(1, boost.TotalHits); Assert.AreEqual(boost.ScoreDocs[0].Score, noboost.ScoreDocs[0].Score, SCORE_EPSILON); ir.Dispose(); dir.Dispose(); }
private int Search(Query q) { QueryUtils.Check(Random, q, searcher); return(searcher.Search(q, null, 1000).TotalHits); }
public virtual void TestRandomQueries() { string[] vals = new string[] { "w1", "w2", "w3", "w4", "w5", "xx", "yy", "zzz" }; int tot = 0; BooleanQuery q1 = null; try { // increase number of iterations for more complete testing int num = AtLeast(20); for (int i = 0; i < num; i++) { int level = Random.Next(3); q1 = RandBoolQuery(new Random(Random.Next()), Random.NextBoolean(), level, field, vals, null); // Can't sort by relevance since floating point numbers may not quite // match up. Sort sort = Sort.INDEXORDER; QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, q1, Searcher); // baseline sim try { // a little hackish, QueryUtils.check is too costly to do on bigSearcher in this loop. Searcher.Similarity = BigSearcher.Similarity; // random sim QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, q1, Searcher); } finally { Searcher.Similarity = new DefaultSimilarity(); // restore } TopFieldCollector collector = TopFieldCollector.Create(sort, 1000, false, true, true, true); Searcher.Search(q1, null, collector); ScoreDoc[] hits1 = collector.GetTopDocs().ScoreDocs; collector = TopFieldCollector.Create(sort, 1000, false, true, true, false); Searcher.Search(q1, null, collector); ScoreDoc[] hits2 = collector.GetTopDocs().ScoreDocs; tot += hits2.Length; CheckHits.CheckEqual(q1, hits1, hits2); BooleanQuery q3 = new BooleanQuery(); q3.Add(q1, Occur.SHOULD); q3.Add(new PrefixQuery(new Term("field2", "b")), Occur.SHOULD); TopDocs hits4 = BigSearcher.Search(q3, 1); Assert.AreEqual(MulFactor * collector.TotalHits + NUM_EXTRA_DOCS / 2, hits4.TotalHits); } } catch (Exception) { // For easier debugging Console.WriteLine("failed query: " + q1); throw; } // System.out.println("Total hits:"+tot); }
/// <summary> /// checks that no scores or freqs are infinite </summary> private void AssertSaneScoring(PhraseQuery pq, IndexSearcher searcher) { searcher.Search(pq, new CollectorAnonymousClass(this)); QueryUtils.Check(Random, pq, searcher); }
public virtual void TestRandomQueries() { string[] vals = new string[] { "w1", "w2", "w3", "w4", "w5", "xx", "yy", "zzz" }; int tot = 0; BooleanQuery q1 = null; try { // increase number of iterations for more complete testing int num = AtLeast(20); for (int i = 0; i < num; i++) { int level = Random.Next(3); q1 = RandBoolQuery(new J2N.Randomizer(Random.NextInt64()), Random.NextBoolean(), level, field, vals, null); // Can't sort by relevance since floating point numbers may not quite // match up. Sort sort = Sort.INDEXORDER; QueryUtils.Check(Random, q1, searcher); // baseline sim try { // a little hackish, QueryUtils.check is too costly to do on bigSearcher in this loop. searcher.Similarity = bigSearcher.Similarity; // random sim QueryUtils.Check(Random, q1, searcher); } finally { searcher.Similarity = new DefaultSimilarity(); // restore } TopFieldCollector collector = TopFieldCollector.Create(sort, 1000, false, true, true, true); searcher.Search(q1, null, collector); ScoreDoc[] hits1 = collector.GetTopDocs().ScoreDocs; collector = TopFieldCollector.Create(sort, 1000, false, true, true, false); searcher.Search(q1, null, collector); ScoreDoc[] hits2 = collector.GetTopDocs().ScoreDocs; tot += hits2.Length; CheckHits.CheckEqual(q1, hits1, hits2); BooleanQuery q3 = new BooleanQuery(); q3.Add(q1, Occur.SHOULD); q3.Add(new PrefixQuery(new Term("field2", "b")), Occur.SHOULD); TopDocs hits4 = bigSearcher.Search(q3, 1); Assert.AreEqual(mulFactor * collector.TotalHits + NUM_EXTRA_DOCS / 2, hits4.TotalHits); } } catch (Exception e) when(e.IsException()) { // For easier debugging Console.WriteLine("failed query: " + q1); throw; // LUCENENET: CA2200: Rethrow to preserve stack details (https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2200-rethrow-to-preserve-stack-details) } // System.out.println("Total hits:"+tot); }
public virtual void TestNonExistingPhrase() { // phrase without repetitions that exists in 2 docs Query.Add(new Term("nonexist", "phrase")); Query.Add(new Term("nonexist", "notexist")); Query.Add(new Term("nonexist", "found")); Query.Slop = 2; // would be found this way ScoreDoc[] hits = Searcher.Search(Query, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length, "phrase without repetitions exists in 2 docs"); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, Query, Searcher); // phrase with repetitions that exists in 2 docs Query = new PhraseQuery(); Query.Add(new Term("nonexist", "phrase")); Query.Add(new Term("nonexist", "exist")); Query.Add(new Term("nonexist", "exist")); Query.Slop = 1; // would be found hits = Searcher.Search(Query, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length, "phrase with repetitions exists in two docs"); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, Query, Searcher); // phrase I with repetitions that does not exist in any doc Query = new PhraseQuery(); Query.Add(new Term("nonexist", "phrase")); Query.Add(new Term("nonexist", "notexist")); Query.Add(new Term("nonexist", "phrase")); Query.Slop = 1000; // would not be found no matter how high the slop is hits = Searcher.Search(Query, null, 1000).ScoreDocs; Assert.AreEqual(0, hits.Length, "nonexisting phrase with repetitions does not exist in any doc"); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, Query, Searcher); // phrase II with repetitions that does not exist in any doc Query = new PhraseQuery(); Query.Add(new Term("nonexist", "phrase")); Query.Add(new Term("nonexist", "exist")); Query.Add(new Term("nonexist", "exist")); Query.Add(new Term("nonexist", "exist")); Query.Slop = 1000; // would not be found no matter how high the slop is hits = Searcher.Search(Query, null, 1000).ScoreDocs; Assert.AreEqual(0, hits.Length, "nonexisting phrase with repetitions does not exist in any doc"); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, Query, Searcher); }
public virtual void TestPalyndrome3() { // search on non palyndrome, find phrase with no slop, using exact phrase scorer Query.Slop = 0; // to use exact phrase scorer Query.Add(new Term("field", "one")); Query.Add(new Term("field", "two")); Query.Add(new Term("field", "three")); ScoreDoc[] hits = Searcher.Search(Query, null, 1000).ScoreDocs; Assert.AreEqual(1, hits.Length, "phrase found with exact phrase scorer"); float score0 = hits[0].Score; //System.out.println("(exact) field: one two three: "+score0); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, Query, Searcher); // just make sure no exc: Searcher.Explain(Query, 0); // search on non palyndrome, find phrase with slop 3, though no slop required here. Query.Slop = 4; // to use sloppy scorer hits = Searcher.Search(Query, null, 1000).ScoreDocs; Assert.AreEqual(1, hits.Length, "just sloppy enough"); float score1 = hits[0].Score; //System.out.println("(sloppy) field: one two three: "+score1); Assert.AreEqual(score0, score1, SCORE_COMP_THRESH, "exact scorer and sloppy scorer score the same when slop does not matter"); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, Query, Searcher); // search ordered in palyndrome, find it twice Query = new PhraseQuery(); Query.Slop = 4; // must be at least four for both ordered and reversed to match Query.Add(new Term("palindrome", "one")); Query.Add(new Term("palindrome", "two")); Query.Add(new Term("palindrome", "three")); hits = Searcher.Search(Query, null, 1000).ScoreDocs; // just make sure no exc: Searcher.Explain(Query, 0); Assert.AreEqual(1, hits.Length, "just sloppy enough"); //float score2 = hits[0].Score; //System.out.println("palindrome: one two three: "+score2); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, Query, Searcher); //commented out for sloppy-phrase efficiency (issue 736) - see SloppyPhraseScorer.phraseFreq(). //Assert.IsTrue("ordered scores higher in palindrome",score1+SCORE_COMP_THRESH<score2); // search reveresed in palyndrome, find it twice Query = new PhraseQuery(); Query.Slop = 4; // must be at least four for both ordered and reversed to match Query.Add(new Term("palindrome", "three")); Query.Add(new Term("palindrome", "two")); Query.Add(new Term("palindrome", "one")); hits = Searcher.Search(Query, null, 1000).ScoreDocs; Assert.AreEqual(1, hits.Length, "just sloppy enough"); //float score3 = hits[0].Score; //System.out.println("palindrome: three two one: "+score3); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, Query, Searcher); //commented out for sloppy-phrase efficiency (issue 736) - see SloppyPhraseScorer.phraseFreq(). //Assert.IsTrue("reversed scores higher in palindrome",score1+SCORE_COMP_THRESH<score3); //Assert.AreEqual("ordered or reversed does not matter",score2, score3, SCORE_COMP_THRESH); }
private int Search(Query q) { QueryUtils.Check(Random(), q, Searcher, Similarity); return(Searcher.Search(q, null, 1000).TotalHits); }
public virtual void TestPhraseQueryInConjunctionScorer() { Directory directory = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, directory); Documents.Document doc = new Documents.Document(); doc.Add(NewTextField("source", "marketing info", Field.Store.YES)); writer.AddDocument(doc); doc = new Documents.Document(); doc.Add(NewTextField("contents", "foobar", Field.Store.YES)); doc.Add(NewTextField("source", "marketing info", Field.Store.YES)); writer.AddDocument(doc); IndexReader reader = writer.GetReader(); writer.Dispose(); IndexSearcher searcher = NewSearcher(reader); PhraseQuery phraseQuery = new PhraseQuery(); phraseQuery.Add(new Term("source", "marketing")); phraseQuery.Add(new Term("source", "info")); ScoreDoc[] hits = searcher.Search(phraseQuery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, phraseQuery, searcher); TermQuery termQuery = new TermQuery(new Term("contents", "foobar")); BooleanQuery booleanQuery = new BooleanQuery(); booleanQuery.Add(termQuery, Occur.MUST); booleanQuery.Add(phraseQuery, Occur.MUST); hits = searcher.Search(booleanQuery, null, 1000).ScoreDocs; Assert.AreEqual(1, hits.Length); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, termQuery, searcher); reader.Dispose(); writer = new RandomIndexWriter(Random, directory, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetOpenMode(OpenMode.CREATE)); doc = new Documents.Document(); doc.Add(NewTextField("contents", "map entry woo", Field.Store.YES)); writer.AddDocument(doc); doc = new Documents.Document(); doc.Add(NewTextField("contents", "woo map entry", Field.Store.YES)); writer.AddDocument(doc); doc = new Documents.Document(); doc.Add(NewTextField("contents", "map foobarword entry woo", Field.Store.YES)); writer.AddDocument(doc); reader = writer.GetReader(); writer.Dispose(); searcher = NewSearcher(reader); termQuery = new TermQuery(new Term("contents", "woo")); phraseQuery = new PhraseQuery(); phraseQuery.Add(new Term("contents", "map")); phraseQuery.Add(new Term("contents", "entry")); hits = searcher.Search(termQuery, null, 1000).ScoreDocs; Assert.AreEqual(3, hits.Length); hits = searcher.Search(phraseQuery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); booleanQuery = new BooleanQuery(); booleanQuery.Add(termQuery, Occur.MUST); booleanQuery.Add(phraseQuery, Occur.MUST); hits = searcher.Search(booleanQuery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); booleanQuery = new BooleanQuery(); booleanQuery.Add(phraseQuery, Occur.MUST); booleanQuery.Add(termQuery, Occur.MUST); hits = searcher.Search(booleanQuery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, booleanQuery, searcher); reader.Dispose(); directory.Dispose(); }
public virtual void TestPhraseQueryInConjunctionScorer() { RAMDirectory directory = new RAMDirectory(); IndexWriter writer = new IndexWriter(directory, new WhitespaceAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED); Document doc = new Document(); doc.Add(new Field("source", "marketing info", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc); doc = new Document(); doc.Add(new Field("contents", "foobar", Field.Store.YES, Field.Index.ANALYZED)); doc.Add(new Field("source", "marketing info", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc); writer.Optimize(); writer.Close(); IndexSearcher searcher = new IndexSearcher(directory, true); PhraseQuery phraseQuery = new PhraseQuery(); phraseQuery.Add(new Term("source", "marketing")); phraseQuery.Add(new Term("source", "info")); ScoreDoc[] hits = searcher.Search(phraseQuery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); QueryUtils.Check(phraseQuery, searcher); TermQuery termQuery = new TermQuery(new Term("contents", "foobar")); BooleanQuery booleanQuery = new BooleanQuery(); booleanQuery.Add(termQuery, Occur.MUST); booleanQuery.Add(phraseQuery, Occur.MUST); hits = searcher.Search(booleanQuery, null, 1000).ScoreDocs; Assert.AreEqual(1, hits.Length); QueryUtils.Check(termQuery, searcher); searcher.Close(); writer = new IndexWriter(directory, new WhitespaceAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED); doc = new Document(); doc.Add(new Field("contents", "map entry woo", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc); doc = new Document(); doc.Add(new Field("contents", "woo map entry", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc); doc = new Document(); doc.Add(new Field("contents", "map foobarword entry woo", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc); writer.Optimize(); writer.Close(); searcher = new IndexSearcher(directory, true); termQuery = new TermQuery(new Term("contents", "woo")); phraseQuery = new PhraseQuery(); phraseQuery.Add(new Term("contents", "map")); phraseQuery.Add(new Term("contents", "entry")); hits = searcher.Search(termQuery, null, 1000).ScoreDocs; Assert.AreEqual(3, hits.Length); hits = searcher.Search(phraseQuery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); booleanQuery = new BooleanQuery(); booleanQuery.Add(termQuery, Occur.MUST); booleanQuery.Add(phraseQuery, Occur.MUST); hits = searcher.Search(booleanQuery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); booleanQuery = new BooleanQuery(); booleanQuery.Add(phraseQuery, Occur.MUST); booleanQuery.Add(termQuery, Occur.MUST); hits = searcher.Search(booleanQuery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); QueryUtils.Check(booleanQuery, searcher); searcher.Close(); directory.Close(); }
/// <summary> /// checks that no scores or freqs are infinite </summary> private void AssertSaneScoring(PhraseQuery pq, IndexSearcher searcher) { searcher.Search(pq, new CollectorAnonymousInnerClassHelper(this)); QueryUtils.Check(Random(), pq, searcher, Similarity); }
public virtual void TestRandomQueries() { System.Random rnd = NewRandom(); System.String field = "data"; System.String[] vals = new System.String[] { "1", "2", "3", "4", "5", "6", "A", "Z", "B", "Y", "Z", "X", "foo" }; int maxLev = 4; // callback object to set a random setMinimumNumberShouldMatch TestBoolean2.Callback minNrCB = new AnonymousClassCallback(rnd, this); // increase number of iterations for more complete testing for (int i = 0; i < 1000; i++) { int lev = rnd.Next(maxLev); long seed = rnd.Next(System.Int32.MaxValue); BooleanQuery q1 = TestBoolean2.RandBoolQuery(new System.Random((System.Int32)seed), lev, field, vals, null); // BooleanQuery q2 = TestBoolean2.randBoolQuery(new Random(seed), lev, field, vals, minNrCB); BooleanQuery q2 = TestBoolean2.RandBoolQuery(new System.Random((System.Int32)seed), lev, field, vals, null); // only set minimumNumberShouldMatch on the top level query since setting // at a lower level can change the score. minNrCB.PostCreate(q2); // Can't use Hits because normalized scores will mess things // up. The non-sorting version of search() that returns TopDocs // will not normalize scores. TopDocs top1 = s.Search(q1, null, 100); TopDocs top2 = s.Search(q2, null, 100); QueryUtils.Check(q1, s); QueryUtils.Check(q2, s); // The constrained query // should be a superset to the unconstrained query. if (top2.TotalHits > top1.TotalHits) { //TestCase.fail("Constrained results not a subset:\n" + CheckHits.TopdocsString(top1, 0, 0) + CheckHits.TopdocsString(top2, 0, 0) + "for query:" + q2.ToString()); Assert.Fail("Constrained results not a subset:\n" + CheckHits.TopdocsString(top1, 0, 0) + CheckHits.TopdocsString(top2, 0, 0) + "for query:" + q2.ToString()); } for (int hit = 0; hit < top2.TotalHits; hit++) { int id = top2.ScoreDocs[hit].doc; float score = top2.ScoreDocs[hit].score; bool found = false; // find this doc in other hits for (int other = 0; other < top1.TotalHits; other++) { if (top1.ScoreDocs[other].doc == id) { found = true; float otherScore = top1.ScoreDocs[other].score; // check if scores match if (System.Math.Abs(otherScore - score) > 1.0e-6f) { //TestCase.fail("Doc " + id + " scores don't match\n" + CheckHits.TopdocsString(top1, 0, 0) + CheckHits.TopdocsString(top2, 0, 0) + "for query:" + q2.ToString()); Assert.Fail("Doc " + id + " scores don't match\n" + CheckHits.TopdocsString(top1, 0, 0) + CheckHits.TopdocsString(top2, 0, 0) + "for query:" + q2.ToString()); } } } // check if subset if (!found) { //TestCase.fail("Doc " + id + " not found\n" + CheckHits.TopdocsString(top1, 0, 0) + CheckHits.TopdocsString(top2, 0, 0) + "for query:" + q2.ToString()); Assert.Fail("Doc " + id + " not found\n" + CheckHits.TopdocsString(top1, 0, 0) + CheckHits.TopdocsString(top2, 0, 0) + "for query:" + q2.ToString()); } } } // System.out.println("Total hits:"+tot); }
public virtual void TestEqualsAndHash() { System.Int32 tempAux = 10; System.Int32 tempAux2 = 20; QueryUtils.CheckHashEquals(NumericRangeQuery.NewIntRange("test1", 4, tempAux, tempAux2, true, true)); System.Int32 tempAux3 = 10; System.Int32 tempAux4 = 20; QueryUtils.CheckHashEquals(NumericRangeQuery.NewIntRange("test2", 4, tempAux3, tempAux4, false, true)); System.Int32 tempAux5 = 10; System.Int32 tempAux6 = 20; QueryUtils.CheckHashEquals(NumericRangeQuery.NewIntRange("test3", 4, tempAux5, tempAux6, true, false)); System.Int32 tempAux7 = 10; System.Int32 tempAux8 = 20; QueryUtils.CheckHashEquals(NumericRangeQuery.NewIntRange("test4", 4, tempAux7, tempAux8, false, false)); //UPGRADE_TODO: The 'System.Int32' structure does not have an equivalent to NULL. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1291'" System.Int32 tempAux9 = 10; QueryUtils.CheckHashEquals(NumericRangeQuery.NewIntRange("test5", 4, tempAux9, null, true, true)); //UPGRADE_TODO: The 'System.Int32' structure does not have an equivalent to NULL. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1291'" System.Int32 tempAux10 = 20; QueryUtils.CheckHashEquals(NumericRangeQuery.NewIntRange("test6", 4, null, tempAux10, true, true)); //UPGRADE_TODO: The 'System.Int32' structure does not have an equivalent to NULL. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1291'" QueryUtils.CheckHashEquals(NumericRangeQuery.NewIntRange("test7", 4, null, null, true, true)); System.Int32 tempAux11 = 10; System.Int32 tempAux12 = 20; System.Int32 tempAux13 = 10; System.Int32 tempAux14 = 20; QueryUtils.CheckEqual(NumericRangeQuery.NewIntRange("test8", 4, tempAux11, tempAux12, true, true), NumericRangeQuery.NewIntRange("test8", 4, tempAux13, tempAux14, true, true)); System.Int32 tempAux15 = 10; System.Int32 tempAux16 = 20; System.Int32 tempAux17 = 10; System.Int32 tempAux18 = 20; QueryUtils.CheckUnequal(NumericRangeQuery.NewIntRange("test9", 4, tempAux15, tempAux16, true, true), NumericRangeQuery.NewIntRange("test9", 8, tempAux17, tempAux18, true, true)); System.Int32 tempAux19 = 10; System.Int32 tempAux20 = 20; System.Int32 tempAux21 = 10; System.Int32 tempAux22 = 20; QueryUtils.CheckUnequal(NumericRangeQuery.NewIntRange("test10a", 4, tempAux19, tempAux20, true, true), NumericRangeQuery.NewIntRange("test10b", 4, tempAux21, tempAux22, true, true)); System.Int32 tempAux23 = 10; System.Int32 tempAux24 = 20; System.Int32 tempAux25 = 20; System.Int32 tempAux26 = 10; QueryUtils.CheckUnequal(NumericRangeQuery.NewIntRange("test11", 4, tempAux23, tempAux24, true, true), NumericRangeQuery.NewIntRange("test11", 4, tempAux25, tempAux26, true, true)); System.Int32 tempAux27 = 10; System.Int32 tempAux28 = 20; System.Int32 tempAux29 = 10; System.Int32 tempAux30 = 20; QueryUtils.CheckUnequal(NumericRangeQuery.NewIntRange("test12", 4, tempAux27, tempAux28, true, true), NumericRangeQuery.NewIntRange("test12", 4, tempAux29, tempAux30, false, true)); System.Int32 tempAux31 = 10; System.Int32 tempAux32 = 20; System.Single tempAux33 = (float)10f; System.Single tempAux34 = (float)20f; QueryUtils.CheckUnequal(NumericRangeQuery.NewIntRange("test13", 4, tempAux31, tempAux32, true, true), NumericRangeQuery.NewFloatRange("test13", 4, tempAux33, tempAux34, true, true)); // the following produces a hash collision, because Long and Integer have the same hashcode, so only test equality: System.Int32 tempAux35 = 10; System.Int32 tempAux36 = 20; Query q1 = NumericRangeQuery.NewIntRange("test14", 4, tempAux35, tempAux36, true, true); System.Int64 tempAux37 = 10L; System.Int64 tempAux38 = 20L; Query q2 = NumericRangeQuery.NewLongRange("test14", 4, tempAux37, tempAux38, true, true); Assert.IsFalse(q1.Equals(q2)); Assert.IsFalse(q2.Equals(q1)); }
private void TFilteredQuery(bool useRandomAccess) { Query filteredquery = new FilteredQuery(Query, Filter, RandomFilterStrategy(Random, useRandomAccess)); ScoreDoc[] hits = Searcher.Search(filteredquery, null, 1000).ScoreDocs; Assert.AreEqual(1, hits.Length); Assert.AreEqual(1, hits[0].Doc); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, filteredquery, Searcher); hits = Searcher.Search(filteredquery, null, 1000, new Sort(new SortField("sorter", SortFieldType.STRING))).ScoreDocs; Assert.AreEqual(1, hits.Length); Assert.AreEqual(1, hits[0].Doc); filteredquery = new FilteredQuery(new TermQuery(new Term("field", "one")), Filter, RandomFilterStrategy(Random, useRandomAccess)); hits = Searcher.Search(filteredquery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, filteredquery, Searcher); filteredquery = new FilteredQuery(new MatchAllDocsQuery(), Filter, RandomFilterStrategy(Random, useRandomAccess)); hits = Searcher.Search(filteredquery, null, 1000).ScoreDocs; Assert.AreEqual(2, hits.Length); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, filteredquery, Searcher); filteredquery = new FilteredQuery(new TermQuery(new Term("field", "x")), Filter, RandomFilterStrategy(Random, useRandomAccess)); hits = Searcher.Search(filteredquery, null, 1000).ScoreDocs; Assert.AreEqual(1, hits.Length); Assert.AreEqual(3, hits[0].Doc); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, filteredquery, Searcher); filteredquery = new FilteredQuery(new TermQuery(new Term("field", "y")), Filter, RandomFilterStrategy(Random, useRandomAccess)); hits = Searcher.Search(filteredquery, null, 1000).ScoreDocs; Assert.AreEqual(0, hits.Length); QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, filteredquery, Searcher); // test boost Filter f = NewStaticFilterA(); float boost = 2.5f; BooleanQuery bq1 = new BooleanQuery(); TermQuery tq = new TermQuery(new Term("field", "one")); tq.Boost = boost; bq1.Add(tq, Occur.MUST); bq1.Add(new TermQuery(new Term("field", "five")), Occur.MUST); BooleanQuery bq2 = new BooleanQuery(); tq = new TermQuery(new Term("field", "one")); filteredquery = new FilteredQuery(tq, f, RandomFilterStrategy(Random, useRandomAccess)); filteredquery.Boost = boost; bq2.Add(filteredquery, Occur.MUST); bq2.Add(new TermQuery(new Term("field", "five")), Occur.MUST); AssertScoreEquals(bq1, bq2); Assert.AreEqual(boost, filteredquery.Boost, 0); Assert.AreEqual(1.0f, tq.Boost, 0); // the boost value of the underlying query shouldn't have changed }