Example #1
0
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>);
}
Example #2
0
 TermPtr TermBuffer::toTerm()
 {
     if (field.empty()) // unset
         return TermPtr();
     
     if (!term)
         term = newLucene<Term>(field, String(text->result.get(), text->length));
     
     return term;
 }
Example #3
0
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());
     }
 }