コード例 #1
0
void QueryExecutor::execute(HitCollectorPtr& pCollector,
                            ScorerPtr& pScorer,
                            const QueryTracerPtr& pTracer)
{
    //TODO: allocate from mempool
    MatchedDocSet machedDocs(m_pPool, DEFAULT_MATCHED_DOC_BUFFER_SIZE, size());
    machedDocs.setTracer(pTracer);

    QueryFeature queryFeature;
    queryFeature.reserve(size());
    extractFeature(queryFeature);

    pScorer->beginQuery(m_pFeatureProvider, queryFeature);
    while (advance(machedDocs) > 0)
    {
        FX_TRACE("Matched doc count: [%u]", (uint32_t)machedDocs.size());
        pScorer->score(machedDocs);
        pCollector->collect(machedDocs);
        machedDocs.reset();
    }
    pScorer->endQuery();
}