public virtual void TestIgnoreSpanScorer() { PayloadTermQuery query = new PayloadTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"), new MaxPayloadFunction(), false); IndexReader reader = DirectoryReader.Open(Directory); IndexSearcher theSearcher = NewSearcher(reader); theSearcher.Similarity = new FullSimilarity(); TopDocs hits = Searcher.Search(query, null, 100); Assert.IsTrue(hits != null, "hits is null and it shouldn't be"); Assert.IsTrue(hits.TotalHits == 100, "hits Size: " + hits.TotalHits + " is not: " + 100); //they should all have the exact same score, because they all contain seventy once, and we set //all the other similarity factors to be 1 //System.out.println("Hash: " + seventyHash + " Twice Hash: " + 2*seventyHash); Assert.IsTrue(hits.MaxScore == 4.0, hits.MaxScore + " does not equal: " + 4.0); //there should be exactly 10 items that score a 4, all the rest should score a 2 //The 10 items are: 70 + i*100 where i in [0-9] int numTens = 0; for (int i = 0; i < hits.ScoreDocs.Length; i++) { ScoreDoc doc = hits.ScoreDocs[i]; if (doc.Doc % 10 == 0) { numTens++; Assert.IsTrue(doc.Score == 4.0, doc.Score + " does not equal: " + 4.0); } else { Assert.IsTrue(doc.Score == 2, doc.Score + " does not equal: " + 2); } } Assert.IsTrue(numTens == 10, numTens + " does not equal: " + 10); CheckHits.CheckExplanations(query, "field", Searcher, true); Spans spans = MultiSpansWrapper.Wrap(Searcher.TopReaderContext, query); Assert.IsTrue(spans != null, "spans is null and it shouldn't be"); //should be two matches per document int count = 0; //100 hits times 2 matches per hit, we should have 200 in count while (spans.Next()) { count++; } reader.Dispose(); }
private void AssertHits(Query q, float[] scores) { ScoreDoc[] expected = new ScoreDoc[scores.Length]; int[] expectedDocs = new int[scores.Length]; for (int i = 0; i < expected.Length; i++) { expectedDocs[i] = i; expected[i] = new ScoreDoc(i, scores[i]); } TopDocs docs = @is.Search(q, 10, new Sort(new SortField("id", SortFieldType.STRING))); CheckHits.DoCheckHits(Random, q, "", @is, expectedDocs, Similarity); CheckHits.CheckHitsQuery(q, expected, docs.ScoreDocs, expectedDocs); CheckHits.CheckExplanations(q, "", @is); }
private void AssertHits(Query q, float[] scores) { ScoreDoc[] expected = new ScoreDoc[scores.Length]; int[] expectedDocs = new int[scores.Length]; for (int i = 0; i < expected.Length; i++) { expectedDocs[i] = i; expected[i] = new ScoreDoc(i, scores[i]); } TopDocs docs = searcher.Search(q, null, documents.Count, new Sort(new SortField("id", SortFieldType.STRING)), true, false); CheckHits.DoCheckHits(Random(), q, "", searcher, expectedDocs, Similarity); CheckHits.CheckHitsQuery(q, expected, docs.ScoreDocs, expectedDocs); CheckHits.CheckExplanations(q, "", searcher); }
private void AssertHits(Query q, float[] scores) { ScoreDoc[] expected = new ScoreDoc[scores.Length]; int[] expectedDocs = new int[scores.Length]; for (int i = 0; i < expected.Length; i++) { expectedDocs[i] = i; expected[i] = new ScoreDoc(i, scores[i]); } TopDocs docs = searcher.Search(q, null, documents.Count, new Sort(new SortField("id", SortFieldType.STRING)), true, false); CheckHits.DoCheckHits( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, q, "", searcher, expectedDocs); CheckHits.CheckHitsQuery(q, expected, docs.ScoreDocs, expectedDocs); CheckHits.CheckExplanations(q, "", searcher); }
protected virtual void AssertHits(Query q, float[] scores) { ScoreDoc[] expected = new ScoreDoc[scores.Length]; int[] expectedDocs = new int[scores.Length]; for (int i = 0; i < expected.Length; i++) { expectedDocs[i] = i; expected[i] = new ScoreDoc(i, scores[i]); } TopDocs docs = searcher.Search(q, 2, new Sort(new SortField("id", SortFieldType.STRING))); /* * for (int i=0;i<docs.scoreDocs.length;i++) { * System.out.println(searcher.explain(q, docs.scoreDocs[i].doc)); * } */ CheckHits.DoCheckHits(Random(), q, "", searcher, expectedDocs, Similarity); CheckHits.CheckHitsQuery(q, expected, docs.ScoreDocs, expectedDocs); CheckHits.CheckExplanations(q, "", searcher); }
/** scores[] are in docId order */ protected virtual void CheckValueSource(ValueSource vs, float[] scores, float delta) { FunctionQuery q = new FunctionQuery(vs); // //TODO is there any point to this check? // int expectedDocs[] = new int[scores.length];//fill with ascending 0....length-1 // for (int i = 0; i < expectedDocs.length; i++) { // expectedDocs[i] = i; // } // CheckHits.checkHits(Random, q, "", indexSearcher, expectedDocs); TopDocs docs = indexSearcher.Search(q, 1000);//calculates the score for (int i = 0; i < docs.ScoreDocs.Length; i++) { ScoreDoc gotSD = docs.ScoreDocs[i]; float expectedScore = scores[gotSD.Doc]; assertEquals("Not equal for doc " + gotSD.Doc, expectedScore, gotSD.Score, delta); } CheckHits.CheckExplanations(q, "", indexSearcher); }