From f49ff6ae01de4f04bb547eb85cc49c1c8828b145 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Tue, 4 Jul 2023 15:36:32 +0200 Subject: Handle sorting on multivalue attributes. --- .../src/vespa/searchvisitor/searchvisitor.cpp | 24 +++++++++------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'streamingvisitors/src') diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index b34a5f4407c..95cd4788d7f 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -886,22 +886,18 @@ SearchVisitor::setupAttributeVectorsForSorting(const search::common::SortSpec & if ( fid != StringFieldIdTMap::npos ) { AttributeGuard::UP attr(_attrMan.getAttribute(sInfo._field)); if (attr->valid()) { - if (!(*attr)->hasMultiValue()) { - size_t index(_attributeFields.size()); - for(size_t j(0); j < index; j++) { - if (_attributeFields[j]._field == fid) { - index = j; - _attributeFields[index]._ascending = sInfo._ascending; - _attributeFields[index]._converter = sInfo._converter.get(); - } + size_t index(_attributeFields.size()); + for(size_t j(0); j < index; j++) { + if (_attributeFields[j]._field == fid) { + index = j; + _attributeFields[index]._ascending = sInfo._ascending; + _attributeFields[index]._converter = sInfo._converter.get(); } - if (index == _attributeFields.size()) { - _attributeFields.emplace_back(fid, std::move(attr), sInfo._ascending, sInfo._converter.get()); - } - _sortList.push_back(index); - } else { - LOG(warning, "Attribute '%s' is not sortable", sInfo._field.c_str()); } + if (index == _attributeFields.size()) { + _attributeFields.emplace_back(fid, std::move(attr), sInfo._ascending, sInfo._converter.get()); + } + _sortList.push_back(index); } else { LOG(warning, "Attribute '%s' is not valid", sInfo._field.c_str()); } -- cgit v1.2.3