diff options
Diffstat (limited to 'streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp')
-rw-r--r-- | streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp index b41eb041c57..ba97a708cc5 100644 --- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp @@ -56,24 +56,28 @@ RankProcessor::initQueryEnvironment() { QueryWrapper::TermList & terms = _query.getTermList(); - for (uint32_t i = 0; i < terms.size(); ++i) { - if (terms[i].isGeoPosTerm()) { - const vespalib::string & fieldName = terms[i].getTerm()->index(); - const vespalib::string & locStr = terms[i].getTerm()->getTermString(); + for (auto& term : terms) { + if (term.isGeoPosTerm()) { + const vespalib::string & fieldName = term.getTerm()->index(); + const vespalib::string & locStr = term.getTerm()->getTermString(); _queryEnv.addGeoLocation(fieldName, locStr); } - if (!terms[i].isPhraseTerm() || terms[i].isFirstPhraseTerm()) { // register 1 term data per phrase - QueryTermData & qtd = dynamic_cast<QueryTermData &>(terms[i].getTerm()->getQueryItem()); + if (!term.isPhraseTerm() || term.isFirstPhraseTerm()) { // register 1 term data per phrase + QueryTermData & qtd = dynamic_cast<QueryTermData &>(term.getTerm()->getQueryItem()); - qtd.getTermData().setWeight(terms[i].getTerm()->weight()); - qtd.getTermData().setUniqueId(terms[i].getTerm()->uniqueId()); - if (terms[i].isFirstPhraseTerm()) { - qtd.getTermData().setPhraseLength(terms[i].getParent()->width()); + qtd.getTermData().setWeight(term.getTerm()->weight()); + qtd.getTermData().setUniqueId(term.getTerm()->uniqueId()); + if (term.isFirstPhraseTerm()) { + qtd.getTermData().setPhraseLength(term.getParent()->width()); } else { qtd.getTermData().setPhraseLength(1); } + auto* nn_term = term.getTerm()->as_nearest_neighbor_query_node(); + if (nn_term != nullptr) { + qtd.getTermData().set_query_tensor_name(nn_term->get_query_tensor_name()); + } - vespalib::string expandedIndexName = vsm::FieldSearchSpecMap::stripNonFields(terms[i].getTerm()->index()); + vespalib::string expandedIndexName = vsm::FieldSearchSpecMap::stripNonFields(term.getTerm()->index()); const RankManager::View *view = _rankManagerSnapshot->getView(expandedIndexName); if (view != nullptr) { RankManager::View::const_iterator iter = view->begin(); @@ -83,17 +87,17 @@ RankProcessor::initQueryEnvironment() } } else { LOG(warning, "Could not find a view for index '%s'. Ranking no fields.", - getIndexName(terms[i].getTerm()->index(), expandedIndexName).c_str()); + getIndexName(term.getTerm()->index(), expandedIndexName).c_str()); } LOG(debug, "Setup query term '%s:%s' (%s)", - getIndexName(terms[i].getTerm()->index(), expandedIndexName).c_str(), - terms[i].getTerm()->getTerm(), - terms[i].isFirstPhraseTerm() ? "phrase" : "term"); + getIndexName(term.getTerm()->index(), expandedIndexName).c_str(), + term.getTerm()->getTerm(), + term.isFirstPhraseTerm() ? "phrase" : "term"); _queryEnv.addTerm(&qtd.getTermData()); } else { LOG(debug, "Ignore query term '%s:%s' (part of phrase)", - terms[i].getTerm()->index().c_str(), terms[i].getTerm()->getTerm()); + term.getTerm()->index().c_str(), term.getTerm()->getTerm()); } } _rankSetup.prepareSharedState(_queryEnv, _queryEnv.getObjectStore()); |