public override DocComparator getComparator(IndexReader reader, int docBase) { var bitCount = reader.maxDoc(); var docValues = new OpenBitSet(bitCount); if (_exclude) { docValues.set(0, bitCount); } var docs = new int[1]; var freqs = new int[1]; var termTemplate = new Term(_fieldName); foreach (string special in _specials) { TermDocs termDocs = reader.termDocs(termTemplate.createTerm(special)); int count = termDocs.read(docs, freqs); if (count == 1) { if (_exclude) { docValues.fastClear(docs[0]); } else { docValues.fastSet(docs[0]); } } } return(new SpecialsComparator(docValues)); }
public override DocIdSet getDocIdSet(IndexReader reader) { var bitCount = reader.maxDoc(); var bits = new OpenBitSet(bitCount); if (_exclude) { bits.set(0, bitCount); } var docs = new int[1]; var freqs = new int[1]; var termTemplate = new Term(_fieldName); foreach (string special in _specials) { TermDocs termDocs = reader.termDocs(termTemplate.createTerm(special)); int count = termDocs.read(docs, freqs); if (count == 1) { if (_exclude) { bits.fastClear(docs[0]); } else { bits.fastSet(docs[0]); } } } return(bits); }
/// <summary>Deletes all documents that have a given <code>term</code> indexed. /// This is useful if one uses a document field to hold a unique ID string for /// the document. Then to delete such a document, one merely constructs a /// term with the appropriate field and the unique ID string as its text and /// passes it to this method. /// See {@link #DeleteDocument(int)} for information about when this deletion will /// become effective. /// /// </summary> /// <returns> the number of documents deleted /// </returns> /// <throws> StaleReaderException if the index has changed </throws> /// <summary> since this reader was opened /// </summary> /// <throws> CorruptIndexException if the index is corrupt </throws> /// <throws> LockObtainFailedException if another writer </throws> /// <summary> has this index open (<code>write.lock</code> could not /// be obtained) /// </summary> /// <throws> IOException if there is a low-level IO error </throws> public int DeleteDocuments(Term term) { EnsureOpen(); TermDocs docs = TermDocs(term); if (docs == null) { return(0); } int n = 0; try { while (docs.Next()) { DeleteDocument(docs.Doc()); n++; } } finally { docs.Close(); } return(n); }
/// <summary>Optimized implementation. </summary> public virtual int Read(int[] docs, int[] freqs) { while (true) { while (current == null) { if (pointer < readers.Length) { // try next segment base_Renamed = starts[pointer]; current = TermDocs(pointer++); } else { return(0); } } int end = current.Read(docs, freqs); if (end == 0) { // none left in segment current = null; } else { // got some int b = base_Renamed; // adjust doc numbers for (int i = 0; i < end; i++) { docs[i] += b; } return(end); } } }
public virtual void Seek(Term term) { this.term = term; this.base_Renamed = 0; this.pointer = 0; this.current = null; }
public virtual void TestTerms() { TermEnum terms = _reader.Terms(); Assert.IsTrue(terms != null); while (terms.Next() == true) { Term term = terms.Term; Assert.IsTrue(term != null); //System.out.println("Term: " + term); System.String fieldValue = (System.String)DocHelper.NameValues[term.Field]; Assert.IsTrue(fieldValue.IndexOf(term.Text) != -1); } TermDocs termDocs = _reader.TermDocs(); Assert.IsTrue(termDocs != null); termDocs.Seek(new Term(DocHelper.TextField1Key, "field")); Assert.IsTrue(termDocs.Next() == true); termDocs.Seek(new Term(DocHelper.NoNormsKey, DocHelper.NoNormsText)); Assert.IsTrue(termDocs.Next() == true); TermPositions positions = _reader.TermPositions(); positions.Seek(new Term(DocHelper.TextField1Key, "field")); Assert.IsTrue(positions != null); Assert.IsTrue(positions.Doc == 0); Assert.IsTrue(positions.NextPosition() >= 0); }
internal MatchAllScorer(MatchAllDocsQuery enclosingInstance, IndexReader reader, Similarity similarity, Weight w, byte[] norms):base(similarity) { InitBlock(enclosingInstance); this.termDocs = reader.TermDocs(null); score = w.Value; this.norms = norms; }
public virtual void TestTerms() { TermEnum terms = reader.Terms(); Assert.IsTrue(terms != null); while (terms.Next() == true) { Term term = terms.Term(); Assert.IsTrue(term != null); //System.out.println("Term: " + term); System.String fieldValue = (System.String)DocHelper.nameValues[term.Field()]; Assert.IsTrue(fieldValue.IndexOf(term.Text()) != -1); } TermDocs termDocs = reader.TermDocs(); Assert.IsTrue(termDocs != null); termDocs.Seek(new Term(DocHelper.TEXT_FIELD_1_KEY, "field")); Assert.IsTrue(termDocs.Next() == true); termDocs.Seek(new Term(DocHelper.NO_NORMS_KEY, DocHelper.NO_NORMS_TEXT)); Assert.IsTrue(termDocs.Next() == true); TermPositions positions = reader.TermPositions(); positions.Seek(new Term(DocHelper.TEXT_FIELD_1_KEY, "field")); Assert.IsTrue(positions != null); Assert.IsTrue(positions.Doc() == 0); Assert.IsTrue(positions.NextPosition() >= 0); }
public IndexerSetupResult Setup(IXDescriptor descriptor) { if (setup) { return(IndexerSetupResult.Failure); } hashFactory = new System.Security.Cryptography.SHA256Managed(); string _v = Convert.ToBase64String(hashFactory.ComputeHash(System.Text.UTF8Encoding.UTF8.GetBytes(descriptor.ToString()))); int df = indexSearcher.DocFreq(new Term(indexerDocumentDescriptorVersion, _v)); // set up searcher TermDocs term = indexSearcher.IndexReader.TermDocs(); List <Document> docs = new List <Document>(); while (term.Next()) { docs.Add(indexSearcher.Doc(term.Doc)); } return(IndexerSetupResult.Okay); }
internal MatchAllScorer(MatchAllDocsQuery enclosingInstance, IndexReader reader, Similarity similarity, Weight w, byte[] norms) : base(similarity) { InitBlock(enclosingInstance); this.termDocs = reader.TermDocs(null); score = w.Value; this.norms = norms; }
private void AssertTermDocsCount(System.String msg, IndexReader reader, Term term, int expected) { TermDocs tdocs = null; try { tdocs = reader.TermDocs(term); Assert.IsNotNull(tdocs, msg + ", null TermDocs"); int count = 0; while (tdocs.Next()) { count++; } Assert.AreEqual(expected, count, msg + ", count mismatch"); } finally { if (tdocs != null) { try { tdocs.Close(); } catch (System.Exception e) { } } } }
protected internal override System.Object CreateValue(IndexReader reader, Entry entryKey) { System.String field = StringHelper.Intern(entryKey.field); System.String[] retArray = new System.String[reader.MaxDoc]; TermDocs termDocs = reader.TermDocs(); TermEnum termEnum = reader.Terms(new Term(field)); try { do { Term term = termEnum.Term; if (term == null || (System.Object)term.Field != (System.Object)field) { break; } System.String termval = term.Text; termDocs.Seek(termEnum); while (termDocs.Next()) { retArray[termDocs.Doc] = termval; } }while (termEnum.Next()); } finally { termDocs.Close(); termEnum.Close(); } return(retArray); }
/// <summary> /// Ctor. /// </summary> /// <param name="termEnum">The TermEnum to wrap.</param> /// <param name="termDocs">The TermDocs to wrap.</param> /// <param name="field"> </param> /// <param name="enclosing"> </param> public TermEnumerator(TermEnum termEnum, TermDocs termDocs, string field, FieldEnumerator <T> enclosing) { this.termEnum = termEnum; this.termDocs = termDocs; this.fieldName = field; this.enclosing = enclosing; }
private static Hit CreateHit(Document primary_doc, IndexReader secondary_reader, TermDocs term_docs, FieldSelector fields) { Hit hit = DocumentToHit(primary_doc); if (secondary_reader == null) { return(hit); } // Get the stringified version of the URI // exactly as it comes out of the index. Term term = new Term("Uri", primary_doc.Get("Uri")); term_docs.Seek(term); // Move to the first (and only) matching term doc term_docs.Next(); Document secondary_doc = (fields == null) ? secondary_reader.Document(term_docs.Doc()) : secondary_reader.Document(term_docs.Doc(), fields); // If we are using the secondary index, now we need to // merge the properties from the secondary index AddPropertiesToHit(hit, secondary_doc, false); return(hit); }
public override BitArray Bits(IndexReader reader) { // reader.GetVersion could be used to cache // Debug.WriteLine(reader.GetVersion()); // could be used to cache // if (cached reader == reader && _revFirst == if (_revFirst == All || _revLast == All) // optimization { return(new BitArray(reader.MaxDoc(), true)); } BitArray last_bits = new BitArray(reader.MaxDoc(), false); TermEnum t = reader.Terms(new Term(FieldName.RevisionLast, _revFirst.ToString(RevFormat))); TermDocs d = reader.TermDocs(); //if (t.SkipTo((new Term(FieldName.RevisionLast, revision.ToString(RevFormat))))) // extremely slow if (t.Term() != null) { while (t.Term().Field() == FieldName.RevisionLast) { d.Seek(t); while (d.Next()) { last_bits[d.Doc()] = true; } if (!t.Next()) { break; } } } // optimization, skip if we just using the head revision if (_revLast == Head) { return(last_bits); } BitArray first_bits = new BitArray(reader.MaxDoc(), true); t = reader.Terms(new Term("rev_first", (_revLast + 1).ToString(RevFormat))); //if (t.SkipTo((new Term("rev_first", (revision + 1).ToString(RevFormat))))) // extremely slow if (t.Term() != null) { while (t.Term().Field() == "rev_first") { d.Seek(t); while (d.Next()) { first_bits[d.Doc()] = false; } if (!t.Next()) { break; } } } return(last_bits.And(first_bits)); }
public virtual int doTest(int iter, int ndocs, int maxTF, float percentDocs) { Directory dir = new RAMDirectory(); long start = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond); AddDocs(dir, ndocs, "foo", "val", maxTF, percentDocs); long end = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond); System.Console.Out.WriteLine("milliseconds for creation of " + ndocs + " docs = " + (end - start)); IndexReader reader = IndexReader.Open(dir); TermEnum tenum = reader.Terms(new Term("foo", "val")); TermDocs tdocs = reader.TermDocs(); start = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond); int ret = 0; for (int i = 0; i < iter; i++) { tdocs.Seek(tenum); while (tdocs.Next()) { ret += tdocs.Doc(); } } end = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond); System.Console.Out.WriteLine("milliseconds for " + iter + " TermDocs iteration: " + (end - start)); return(ret); }
public virtual void TestTerms() { try { TermEnum terms = reader.Terms(); Assert.IsTrue(terms != null); while (terms.Next() == true) { Term term = terms.Term(); Assert.IsTrue(term != null); //System.out.println("Term: " + term); System.String fieldValue = (System.String)DocHelper.nameValues[term.Field()]; Assert.IsTrue(fieldValue.IndexOf(term.Text()) != -1); } TermDocs termDocs = reader.TermDocs(); Assert.IsTrue(termDocs != null); termDocs.Seek(new Term(DocHelper.TEXT_FIELD_1_KEY, "Field")); Assert.IsTrue(termDocs.Next() == true); TermPositions positions = reader.TermPositions(); positions.Seek(new Term(DocHelper.TEXT_FIELD_1_KEY, "Field")); Assert.IsTrue(positions != null); Assert.IsTrue(positions.Doc() == 0); Assert.IsTrue(positions.NextPosition() >= 0); } catch (System.IO.IOException e) { System.Console.Error.WriteLine(e.StackTrace); Assert.IsTrue(false); } }
/// <summary>Returns an enumeration of all the documents which contain /// <code>term</code>. For each document, the document number, the frequency of /// the term in that document is also provided, for use in search scoring. /// Thus, this method implements the mapping: /// <p><ul> /// Term => <docNum, freq><sup>*</sup> /// </ul> /// <p>The enumeration is ordered by document number. Each document number /// is greater than all that precede it in the enumeration. /// </summary> public virtual TermDocs TermDocs(Term term) { TermDocs termDocs = TermDocs(); termDocs.Seek(term); return(termDocs); }
internal void _ShowTerm(Term t) { if (t == null) { _luke.ShowStatus(_luke.resources.GetString("NoTerms")); return; } if (_luke.IndexReader == null) { _luke.ShowStatus(_luke.resources.GetString("NoIndex")); return; } termDocs = null; this.term = t; comboTerms.SelectedItem = t.Field(); textTerm.Text = t.Text(); labelDocNum.Text = "?"; labelTermFreq.Text = "?"; try { int freq = _luke.IndexReader.DocFreq(t); labelDocFreq.Text = freq.ToString(); labelDocMax.Text = freq.ToString(); } catch (Exception e) { _luke.ShowStatus(e.Message); labelDocFreq.Text = "?"; } }
protected internal override System.Object CreateValue(IndexReader reader, Entry entryKey) { Entry entry = entryKey; System.String field = entry.field; FloatParser parser = (FloatParser)entry.custom; if (parser == null) { try { return(wrapper.GetFloats(reader, field, Lucene.Net.Search.FieldCache_Fields.DEFAULT_FLOAT_PARSER)); } catch (System.FormatException) { return(wrapper.GetFloats(reader, field, Lucene.Net.Search.FieldCache_Fields.NUMERIC_UTILS_FLOAT_PARSER)); } } float[] retArray = null; TermDocs termDocs = reader.TermDocs(); TermEnum termEnum = reader.Terms(new Term(field)); try { do { Term term = termEnum.Term; if (term == null || (System.Object)term.Field != (System.Object)field) { break; } float termval = parser.ParseFloat(term.Text); if (retArray == null) { // late init retArray = new float[reader.MaxDoc]; } termDocs.Seek(termEnum); while (termDocs.Next()) { retArray[termDocs.Doc] = termval; } }while (termEnum.Next()); } catch (StopFillCacheException) { } finally { termDocs.Close(); termEnum.Close(); } if (retArray == null) { // no values retArray = new float[reader.MaxDoc]; } return(retArray); }
public override DocIdSet GetDocIdSet(IndexReader reader) { TermEnum enumerator = query.GetEnum(reader); try { // if current term in enum is null, the enum is empty -> shortcut if (enumerator.Term == null) { return(DocIdSet.EMPTY_DOCIDSET); } // else fill into an OpenBitSet OpenBitSet bitSet = new OpenBitSet(reader.MaxDoc); int[] docs = new int[32]; int[] freqs = new int[32]; TermDocs termDocs = reader.TermDocs(); try { int termCount = 0; do { Term term = enumerator.Term; if (term == null) { break; } termCount++; termDocs.Seek(term); while (true) { int count = termDocs.Read(docs, freqs); if (count != 0) { for (int i = 0; i < count; i++) { bitSet.Set(docs[i]); } } else { break; } } } while (enumerator.Next()); query.IncTotalNumberOfTerms(termCount); // {{Aroush-2.9}} is the use of 'temp' as is right? } finally { termDocs.Close(); } return(bitSet); } finally { enumerator.Close(); } }
public virtual void TestMerge() { //System.out.println("----------------TestMerge------------------"); SegmentMerger merger = new SegmentMerger(mergedDir, mergedSegment, false); merger.Add(reader1); merger.Add(reader2); try { int docsMerged = merger.Merge(); merger.CloseReaders(); Assert.IsTrue(docsMerged == 2); //Should be able to open a new SegmentReader against the new directory SegmentReader mergedReader = new SegmentReader(new SegmentInfo(mergedSegment, docsMerged, mergedDir)); Assert.IsTrue(mergedReader != null); Assert.IsTrue(mergedReader.NumDocs() == 2); Document newDoc1 = mergedReader.Document(0); Assert.IsTrue(newDoc1 != null); //There are 2 unstored fields on the document Assert.IsTrue(DocHelper.NumFields(newDoc1) == DocHelper.NumFields(doc1) - 2); Document newDoc2 = mergedReader.Document(1); Assert.IsTrue(newDoc2 != null); Assert.IsTrue(DocHelper.NumFields(newDoc2) == DocHelper.NumFields(doc2) - 2); TermDocs termDocs = mergedReader.TermDocs(new Term(DocHelper.TEXT_FIELD_2_KEY, "Field")); Assert.IsTrue(termDocs != null); Assert.IsTrue(termDocs.Next() == true); System.Collections.ICollection stored = mergedReader.GetIndexedFieldNames(true); Assert.IsTrue(stored != null); //System.out.println("stored size: " + stored.size()); Assert.IsTrue(stored.Count == 2); TermFreqVector vector = mergedReader.GetTermFreqVector(0, DocHelper.TEXT_FIELD_2_KEY); Assert.IsTrue(vector != null); System.String[] terms = vector.GetTerms(); Assert.IsTrue(terms != null); //System.out.println("Terms size: " + terms.length); Assert.IsTrue(terms.Length == 3); int[] freqs = vector.GetTermFrequencies(); Assert.IsTrue(freqs != null); //System.out.println("Freqs size: " + freqs.length); for (int i = 0; i < terms.Length; i++) { System.String term = terms[i]; int freq = freqs[i]; //System.out.println("Term: " + term + " Freq: " + freq); Assert.IsTrue(DocHelper.FIELD_2_TEXT.IndexOf(term) != -1); Assert.IsTrue(DocHelper.FIELD_2_FREQS[i] == freq); } } catch (System.IO.IOException e) { System.Console.Error.WriteLine(e.StackTrace); Assert.IsTrue(false); } //System.out.println("---------------------end TestMerge-------------------"); }
/// <summary>Returns an enumeration of all the documents which contain /// <code>term</code>. For each document, the document number, the frequency of /// the term in that document is also provided, for use in search scoring. /// Thus, this method implements the mapping: /// <p><ul> /// Term => <docNum, freq><sup>*</sup> /// </ul> /// <p>The enumeration is ordered by document number. Each document number /// is greater than all that precede it in the enumeration. /// </summary> /// <throws> IOException if there is a low-level IO error </throws> public virtual TermDocs TermDocs(Term term) { EnsureOpen(); TermDocs termDocs = TermDocs(); termDocs.Seek(term); return(termDocs); }
public virtual void TestMerge() { SegmentMerger merger = new SegmentMerger(mergedDir, mergedSegment); merger.Add(reader1); merger.Add(reader2); int docsMerged = merger.Merge(); merger.CloseReaders(); Assert.IsTrue(docsMerged == 2); //Should be able to open a new SegmentReader against the new directory SegmentReader mergedReader = SegmentReader.Get(new SegmentInfo(mergedSegment, docsMerged, mergedDir, false, true)); Assert.IsTrue(mergedReader != null); Assert.IsTrue(mergedReader.NumDocs() == 2); Document newDoc1 = mergedReader.Document(0); Assert.IsTrue(newDoc1 != null); //There are 2 unstored fields on the document Assert.IsTrue(DocHelper.NumFields(newDoc1) == DocHelper.NumFields(doc1) - DocHelper.unstored.Count); Document newDoc2 = mergedReader.Document(1); Assert.IsTrue(newDoc2 != null); Assert.IsTrue(DocHelper.NumFields(newDoc2) == DocHelper.NumFields(doc2) - DocHelper.unstored.Count); TermDocs termDocs = mergedReader.TermDocs(new Term(DocHelper.TEXT_FIELD_2_KEY, "field")); Assert.IsTrue(termDocs != null); Assert.IsTrue(termDocs.Next() == true); System.Collections.Generic.ICollection <string> stored = mergedReader.GetFieldNames(IndexReader.FieldOption.INDEXED_WITH_TERMVECTOR); Assert.IsTrue(stored != null); //System.out.println("stored size: " + stored.size()); Assert.IsTrue(stored.Count == 4, "We do not have 4 fields that were indexed with term vector"); TermFreqVector vector = mergedReader.GetTermFreqVector(0, DocHelper.TEXT_FIELD_2_KEY); Assert.IsTrue(vector != null); System.String[] terms = vector.GetTerms(); Assert.IsTrue(terms != null); //System.out.println("Terms size: " + terms.length); Assert.IsTrue(terms.Length == 3); int[] freqs = vector.GetTermFrequencies(); Assert.IsTrue(freqs != null); //System.out.println("Freqs size: " + freqs.length); Assert.IsTrue(vector is TermPositionVector == true); for (int i = 0; i < terms.Length; i++) { System.String term = terms[i]; int freq = freqs[i]; //System.out.println("Term: " + term + " Freq: " + freq); Assert.IsTrue(DocHelper.FIELD_2_TEXT.IndexOf(term) != -1); Assert.IsTrue(DocHelper.FIELD_2_FREQS[i] == freq); } TestSegmentReader.CheckNorms(mergedReader); }
private static Hit CreateHit(Document primary_doc, IndexReader secondary_reader, TermDocs term_docs) { return(CreateHit(primary_doc, secondary_reader, term_docs, null)); }
/// <summary> Construct a <c>TermScorer</c>. /// /// </summary> /// <param name="weight">The weight of the <c>Term</c> in the query. /// </param> /// <param name="td">An iterator over the documents matching the <c>Term</c>. /// </param> /// <param name="similarity">The <c>Similarity</c> implementation to be used for score /// computations. /// </param> /// <param name="norms">The field norms of the document fields for the <c>Term</c>. /// </param> public /*internal*/ TermScorer(Weight weight, TermDocs td, Similarity similarity, byte[] norms):base(similarity) { this.weight = weight; this.termDocs = td; this.norms = norms; this.weightValue = weight.Value; for (int i = 0; i < SCORE_CACHE_SIZE; i++) scoreCache[i] = Similarity.Tf(i) * weightValue; }
/// <summary> /// Initialization method called by subclasses to simulate a shared /// base constructor as generic classes cannot have a parameterized ctor. /// </summary> /// <param name="reader">The index reader to read from.</param> /// <param name="fieldName">The field to enumerate.</param> /// <param name="includeDocs">Whether this enumerator will support TermDocs.</param> protected void Init(IndexReader reader, string fieldName, bool includeDocs) { this.termEnum = reader.Terms(new Term(fieldName)); if (includeDocs) { this.termDocs = reader.TermDocs(); this.tdEnum = new TermDocEnumerator.TermDocUsingTermsEnumerator(this.termDocs, this.termEnum); } this.tEnum = new TermEnumerator(termEnum, termDocs, fieldName, this); }
public override DocIdSetIterator Iterator() { TermDocs td = reader.TermDocs(term); if (td == null) { return(EmptyDocIdSet.Instance.Iterator()); } return(new TermDocIdSetIterator(td)); }
// constructor internal ValueSourceScorer(ValueSourceQuery enclosingInstance, Similarity similarity, IndexReader reader, ValueSourceWeight w) : base(similarity) { InitBlock(enclosingInstance); this.weight = w; this.qWeight = w.Value; // this is when/where the values are first created. vals = Enclosing_Instance.valSrc.GetValues(reader); termDocs = reader.TermDocs(null); }
static string GetProperty(IndexReader reader, string property) { TermDocs td = reader.TermDocs(GetPropertyId(property)); if (!td.Next()) { return(null); } return(reader.Document(td.Doc()).Get(ValueField)); }
public virtual void TestFilterIndexReader_Renamed() { RAMDirectory directory = new MockRAMDirectory(); IndexWriter writer = new IndexWriter(directory, new WhitespaceAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED); Document d1 = new Document(); d1.Add(new Field("default", "one two", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(d1); Document d2 = new Document(); d2.Add(new Field("default", "one three", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(d2); Document d3 = new Document(); d3.Add(new Field("default", "two four", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(d3); writer.Close(); IndexReader reader = new TestReader(IndexReader.Open(directory)); Assert.IsTrue(reader.IsOptimized()); TermEnum terms = reader.Terms(); while (terms.Next()) { Assert.IsTrue(terms.Term().Text().IndexOf('e') != -1); } terms.Close(); TermPositions positions = reader.TermPositions(new Term("default", "one")); while (positions.Next()) { Assert.IsTrue((positions.Doc() % 2) == 1); } int NUM_DOCS = 3; TermDocs td = reader.TermDocs(null); for (int i = 0; i < NUM_DOCS; i++) { Assert.IsTrue(td.Next()); Assert.AreEqual(i, td.Doc()); Assert.AreEqual(1, td.Freq()); } td.Close(); reader.Close(); directory.Close(); }
private static List <Document> GetDocumentsFromTermDocs(TermDocs termDocs, IndexReaderFrame readerFrame) { var docs = new List <Document>(); while (termDocs.Next()) { docs.Add(readerFrame.IndexReader.Document(termDocs.Doc())); } docs.Sort(new DocumentVersionComparer()); return(docs); }
private void buttonShowFirstDoc_Click(object sender, System.EventArgs e) { if (term == null) return; if (_luke.IndexReader == null) { _luke.ShowStatus(_luke.resources.GetString("NoIndex")); return; } try { termDocs = _luke.IndexReader.TermDocs(term); termDocs.Next(); labelDocNum.Text = "1"; _ShowTermDoc(termDocs); } catch (Exception exc) { _luke.ShowStatus(exc.Message); } }
/* A Possible future optimization could skip entire segments */ public virtual bool SkipTo(int target) { for (; ; ) { if (current != null && current.SkipTo(target - base_Renamed)) { return true; } else if (pointer < readers.Length) { base_Renamed = starts[pointer]; current = TermDocs(pointer++); } else return false; } }
public TermDocIdSetIterator(TermDocs td) { _td = td; }
private DocIdSetIterator BuildIterator(RandomAccessDocIdSet docset, TermDocs td) { return new FacetTermQueryDocIdSetIterator(docset, td); }
public virtual void Seek(Term term) { IndexReader reader = ((IndexReader) Enclosing_Instance.fieldToReader[term.Field()]); termDocs = reader != null?reader.TermDocs(term):null; }
public FacetTermQueryDocIdSetIterator(RandomAccessDocIdSet docset, TermDocs td) { _docset = docset; _td = td; }
private static Hit CreateHit ( Document primary_doc, IndexReader secondary_reader, TermDocs term_docs) { return CreateHit ( primary_doc, secondary_reader, term_docs, null); }
private static Hit CreateHit ( Document primary_doc, IndexReader secondary_reader, TermDocs term_docs, FieldSelector fields) { Hit hit = DocumentToHit (primary_doc); if (secondary_reader == null) return hit; // Get the stringified version of the URI // exactly as it comes out of the index. Term term = new Term ("Uri", primary_doc.Get ("Uri")); term_docs.Seek (term); // Move to the first (and only) matching term doc term_docs.Next (); Document secondary_doc = (fields == null) ? secondary_reader.Document (term_docs.Doc ()) : secondary_reader.Document (term_docs.Doc (), fields); // If we are using the secondary index, now we need to // merge the properties from the secondary index AddPropertiesToHit (hit, secondary_doc, false); return hit; }
/* A Possible future optimization could skip entire segments */ public virtual bool SkipTo(int target) { for (; ; ) { if (current != null && current.SkipTo(target - base_Renamed)) { return true; } else if (pointer < readers.Length) { if (tenum != null) { SegmentMergeInfo smi = tenum.matchingSegments[matchingSegmentPos++]; if (smi == null) { pointer = readers.Length; return false; } pointer = smi.ord; } base_Renamed = starts[pointer]; current = TermDocs(pointer++); } else return false; } }
public virtual bool Next() { for (; ; ) { if (current != null && current.Next()) { return true; } else if (pointer < readers.Length) { if (tenum != null) { smi = tenum.matchingSegments[matchingSegmentPos++]; if (smi == null) { pointer = readers.Length; return false; } pointer = smi.ord; } base_Renamed = starts[pointer]; current = TermDocs(pointer++); } else { return false; } } }
public virtual void Seek(Term term) { this.term = term; this.base_Renamed = 0; this.pointer = 0; this.current = null; this.tenum = null; this.smi = null; this.matchingSegmentPos = 0; }
public virtual void Seek(Term term) { termDocs = ((IndexReader) Enclosing_Instance.fieldToReader[term.Field()]).TermDocs(term); }
public FilterTermDocs(TermDocs in_Renamed) { this.in_Renamed = in_Renamed; }
private void _ShowTermDoc(TermDocs td) { if (_luke.IndexReader == null) { _luke.ShowStatus(_luke.resources.GetString("NoIndex")); return; } try { Document doc = _luke.IndexReader.Document(td.Doc()); labelDocNum.Text = td.Doc().ToString(); labelTermFreq.Text = td.Freq().ToString(); _ShowDocFields(td.Doc(), doc); } catch (Exception e) { _luke.ShowStatus(e.Message); } }
public ParallelTermDocs(ParallelReader enclosingInstance, Term term) { InitBlock(enclosingInstance); if (term == null) termDocs = (Enclosing_Instance.readers.Count == 0)?null:((IndexReader) Enclosing_Instance.readers[0]).TermDocs(null); else Seek(term); }
public virtual bool Next() { for (; ; ) { if (current != null && current.Next()) { return true; } else if (pointer < readers.Length) { base_Renamed = starts[pointer]; current = TermDocs(pointer++); } else { return false; } } }
/// <summary>Optimized implementation. </summary> public virtual int Read(int[] docs, int[] freqs) { while (true) { while (current == null) { if (pointer < readers.Length) { // try next segment base_Renamed = starts[pointer]; current = TermDocs(pointer++); } else { return 0; } } int end = current.Read(docs, freqs); if (end == 0) { // none left in segment current = null; } else { // got some int b = base_Renamed; // adjust doc numbers for (int i = 0; i < end; i++) docs[i] += b; return end; } } }
public MatchAllDocIdSetIterator(IndexReader reader) { _termDocs = reader.TermDocs(null); _docid = -1; }