TermPositions* IndexReader::termPositions(Term* term){ //Func - Returns an enumeration of all the documents which contain term. For each // document, in addition to the document number and frequency of the term in // that document, a list of all of the ordinal positions of the term in the document // is available. Thus, this method implements the mapping: // // Term => <docNum, freq,<pos 1, pos 2, ...pos freq-1>>* // // This positional information faciliates phrase and proximity searching. // The enumeration is ordered by document number. Each document number is greater than // all that precede it in the enumeration. //Pre - term != NULL //Post - A reference to TermPositions containing an enumeration of all found documents // has been returned CND_PRECONDITION(term != NULL, "term is NULL"); ensureOpen(); //Reference an instantiated termPositions instance TermPositions* _termPositions = termPositions(); //Seek all documents containing term _termPositions->seek(term); //return the enumeration return _termPositions; }
MultipleTermPositions::MultipleTermPositions(IndexReaderPtr indexReader, Collection<TermPtr> terms) { Collection<TermPositionsPtr> termPositions(Collection<TermPositionsPtr>::newInstance()); for (Collection<TermPtr>::iterator term = terms.begin(); term != terms.end(); ++term) termPositions.add(indexReader->termPositions(*term)); termPositionsQueue = newLucene<TermPositionsQueue>(termPositions); posList = newLucene<IntQueue>(); _doc = 0; _freq = 0; }
TermPositionsPtr IndexReader::termPositions(const TermPtr& term) { ensureOpen(); TermPositionsPtr _termPositions(termPositions()); _termPositions->seek(term); return _termPositions; }