TermPtr Term::newInstance( const char *_wordStr, uint32 _NO ) { AllocatorType alloc; Term *p = alloc.allocate(1); new (p) Term(_wordStr, _NO ); //!! alloc fail must be handled return TermPtr(p, FreeInstance<Term>); }
TermPtr TermBuffer::toTerm() { if (field.empty()) // unset return TermPtr(); if (!term) term = newLucene<Term>(field, String(text->result.get(), text->length)); return term; }
TermPtr Parser::parseTerm() { TermPtr term(new Term); term->lhs = parseFactor(); if (m_errorCode > ErrorCodes::NoError) { panic(termFollow, termFollowSize); return TermPtr(); } // concat this to the term parseTerm_r(term); return term; }
DocIdSetIteratorPtr FieldCacheDocIdSet::iterator() { // Synchronization needed because deleted docs BitVector can change after call to hasDeletions until // TermDocs creation. We only use an iterator with termDocs, when this was requested (eg. range // contains 0) and the index has deletions TermDocsPtr termDocs; { SyncLock instancesLock(reader); termDocs = isCacheable() ? TermDocsPtr() : reader->termDocs(TermPtr()); } if (termDocs) { // a DocIdSetIterator using TermDocs to iterate valid docIds return newLucene<FieldDocIdSetIteratorTermDocs>(shared_from_this(), termDocs); } else { // a DocIdSetIterator generating docIds by incrementing a variable - this one can be used if there // are no deletions are on the index return newLucene<FieldDocIdSetIteratorIncrement>(shared_from_this()); } }