示例#1
0
 // constructor
 internal ValueSourceScorer(ValueSourceQuery enclosingInstance, Similarity similarity, IndexReader reader, ValueSourceWeight w) : base(similarity)
 {
     InitBlock(enclosingInstance);
     this.weight  = w;
     this.qWeight = w.GetValue();
     // this is when/where the values are first created.
     vals     = Enclosing_Instance.valSrc.GetValues(reader);
     termDocs = reader.TermDocs(null);
 }
            /*(non-Javadoc) <see cref="Lucene.Net.Search.Weight.explain(Lucene.Net.Index.IndexReader, int) */
            public override Explanation Explain(IndexReader reader, int doc)
            {
                DocValues vals = enclosingInstance.valSrc.GetValues(reader);
                float     sc   = queryWeight * vals.FloatVal(doc);

                Explanation result = new ComplexExplanation(true, sc, enclosingInstance.ToString() + ", product of:")
                ;

                result.AddDetail(vals.Explain(doc));
                result.AddDetail(new Explanation(enclosingInstance.Boost, "boost"));
                result.AddDetail(new Explanation(queryNorm, "queryNorm"));
                return(result);
            }
示例#3
0
        public virtual void  TestMultiValueSource()
        {
            Directory   dir = new MockRAMDirectory();
            IndexWriter w   = new IndexWriter(dir, new WhitespaceAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED);
            Document    doc = new Document();
            Field       f   = new Field("field", "", Field.Store.NO, Field.Index.NOT_ANALYZED);

            doc.Add(f);

            for (int i = 0; i < 17; i++)
            {
                f.SetValue("" + i);
                w.AddDocument(doc);
                w.Commit();
            }

            IndexReader r = w.GetReader();

            w.Close();

            Assert.IsTrue(r.GetSequentialSubReaders().Length > 1);

            ValueSource s1 = new IntFieldSource("field");
            DocValues   v1 = s1.GetValues(r);
            DocValues   v2 = new MultiValueSource(s1).GetValues(r);

            for (int i = 0; i < r.MaxDoc(); i++)
            {
                Assert.AreEqual(v1.IntVal(i), i);
                Assert.AreEqual(v2.IntVal(i), i);
            }

            Lucene.Net.Search.FieldCache_Fields.DEFAULT.PurgeAllCaches();

            r.Close();
            dir.Close();
        }
示例#4
0
			// constructor
			internal ValueSourceScorer(ValueSourceQuery enclosingInstance, Similarity similarity, IndexReader reader, ValueSourceWeight w):base(similarity)
			{
				InitBlock(enclosingInstance);
				this.weight = w;
				this.qWeight = w.GetValue();
				// this is when/where the values are first created.
				vals = Enclosing_Instance.valSrc.GetValues(reader);
				termDocs = reader.TermDocs(null);
			}
			public ValueSourceFilteredDocIdSet(DocIdSet innerSet, DocValues values, ValueSourceFilter caller) : base(innerSet)
			{
				this.enclosingFilter = caller;
				this.values = values;
			}