public TermPositionsEnum ( Lucene.Net.Index.Term term ) : Lucene.Net.Index.DocsAndPositionsEnum | ||
term | Lucene.Net.Index.Term | |
return | Lucene.Net.Index.DocsAndPositionsEnum |
public DocsAndPositionsEnum TermPositionsEnum(Term term)
{
Debug.Assert(term.Field() != null);
Debug.Assert(term.Bytes() != null);
Fields fields = Fields;
if (fields != null)
{
Terms terms = fields.Terms(term.Field());
if (terms != null)
{
TermsEnum termsEnum = terms.Iterator(null);
if (termsEnum.SeekExact(term.Bytes()))
{
return termsEnum.DocsAndPositions(LiveDocs, null);
}
}
}
return null;
}
public virtual void TestDocsAndPositionsEnumStart() { Directory dir = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), dir); Document doc = new Document(); doc.Add(NewTextField("foo", "bar", Field.Store.NO)); writer.AddDocument(doc); DirectoryReader reader = writer.Reader; AtomicReader r = GetOnlySegmentReader(reader); DocsAndPositionsEnum disi = r.TermPositionsEnum(new Term("foo", "bar")); int docid = disi.DocID(); Assert.AreEqual(-1, docid); Assert.IsTrue(disi.NextDoc() != DocIdSetIterator.NO_MORE_DOCS); // now reuse and check again TermsEnum te = r.Terms("foo").Iterator(null); Assert.IsTrue(te.SeekExact(new BytesRef("bar"))); disi = te.DocsAndPositions(null, disi); docid = disi.DocID(); Assert.AreEqual(-1, docid); Assert.IsTrue(disi.NextDoc() != DocIdSetIterator.NO_MORE_DOCS); writer.Dispose(); r.Dispose(); dir.Dispose(); }