protected internal override string[] CreateValue(IndexReader reader, Entry entryKey, IState state) { System.String field = StringHelper.Intern(entryKey.field); System.String[] retArray = new System.String[reader.MaxDoc]; TermDocs termDocs = reader.TermDocs(state); TermEnum termEnum = reader.Terms(new Term(field), state); 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, state); while (termDocs.Next(state)) { retArray[termDocs.Doc] = termval; } }while (termEnum.Next(state)); } finally { termDocs.Close(); termEnum.Close(); } return(retArray); }
protected internal override float[] CreateValue(IndexReader reader, Entry entryKey, IState state) { 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, state)); } catch (System.FormatException) { return(wrapper.GetFloats(reader, field, Lucene.Net.Search.FieldCache_Fields.NUMERIC_UTILS_FLOAT_PARSER, state)); } } float[] retArray = null; TermDocs termDocs = reader.TermDocs(state); TermEnum termEnum = reader.Terms(new Term(field), state); 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, state); while (termDocs.Next(state)) { retArray[termDocs.Doc] = termval; } }while (termEnum.Next(state)); } catch (StopFillCacheException) { } finally { termDocs.Close(); termEnum.Close(); } if (retArray == null) { // no values retArray = new float[reader.MaxDoc]; } return(retArray); }
public virtual void TestMutipleDocument() { RAMDirectory dir = new RAMDirectory(); IndexWriter writer = new IndexWriter(dir, new KeywordAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED, null); Document doc = new Document(); doc.Add(new Field("partnum", "Q36", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc, null); doc = new Document(); doc.Add(new Field("partnum", "Q37", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc, null); writer.Close(); IndexReader reader = IndexReader.Open((Directory)dir, true, null); TermDocs td = reader.TermDocs(new Term("partnum", "Q36"), null); Assert.IsTrue(td.Next(null)); td = reader.TermDocs(new Term("partnum", "Q37"), null); Assert.IsTrue(td.Next(null)); }
protected internal override short[] CreateValue(IndexReader reader, Entry entryKey, IState state) { Entry entry = entryKey; System.String field = entry.field; ShortParser parser = (ShortParser)entry.custom; if (parser == null) { return(wrapper.GetShorts(reader, field, Lucene.Net.Search.FieldCache_Fields.DEFAULT_SHORT_PARSER, state)); } short[] retArray = new short[reader.MaxDoc]; TermDocs termDocs = reader.TermDocs(state); TermEnum termEnum = reader.Terms(new Term(field), state); try { do { Term term = termEnum.Term; if (term == null || (System.Object)term.Field != (System.Object)field) { break; } short termval = parser.ParseShort(term.Text); termDocs.Seek(termEnum, state); while (termDocs.Next(state)) { retArray[termDocs.Doc] = termval; } }while (termEnum.Next(state)); } catch (StopFillCacheException) { } finally { termDocs.Close(); termEnum.Close(); } return(retArray); }
public override int NextDoc() { return(doc = termDocs.Next() ? termDocs.Doc : NO_MORE_DOCS); }
public override int NextDoc(IState state) { return(doc = termDocs.Next(state) ? termDocs.Doc : NO_MORE_DOCS); }
protected internal override StringIndex CreateValue(IndexReader reader, Entry entryKey, IState state) { System.String field = StringHelper.Intern(entryKey.field); int[] retArray = new int[reader.MaxDoc]; int[] retArrayOrdered = new int[reader.MaxDoc]; for (int i = 0; i < retArrayOrdered.Length; i++) { retArrayOrdered[i] = -1; } var length = reader.MaxDoc + 1; UnmanagedStringArray mterms = new UnmanagedStringArray(length); TermDocs termDocs = reader.TermDocs(state); SegmentTermEnum termEnum = (SegmentTermEnum)reader.Terms(new Term(field), state); int t = 0; // current term number int docIndex = 0; // an entry for documents that have no terms in this field // should a document with no terms be at top or bottom? // this puts them at the top - if it is changed, FieldDocSortedHitQueue // needs to change as well. t++; try { do { if (termEnum.termBuffer.Field != field || t >= length) { break; } // store term text mterms.Add(termEnum.termBuffer.TextAsSpan); termDocs.Seek(termEnum, state); while (termDocs.Next(state)) { var pt = retArray[termDocs.Doc]; retArray[termDocs.Doc] = t; if (pt == 0) { retArrayOrdered[docIndex++] = termDocs.Doc; } } t++; }while (termEnum.Next(state)); } finally { termDocs.Close(); termEnum.Close(); } StringIndex value_Renamed = new StringIndex(retArray, retArrayOrdered, mterms); return(value_Renamed); }