diff options
Diffstat (limited to 'vsm')
-rw-r--r-- | vsm/src/vespa/vsm/searcher/fieldsearcher.cpp | 6 | ||||
-rw-r--r-- | vsm/src/vespa/vsm/searcher/fieldsearcher.h | 4 |
2 files changed, 6 insertions, 4 deletions
diff --git a/vsm/src/vespa/vsm/searcher/fieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/fieldsearcher.cpp index 31f53fee300..78531f41cf8 100644 --- a/vsm/src/vespa/vsm/searcher/fieldsearcher.cpp +++ b/vsm/src/vespa/vsm/searcher/fieldsearcher.cpp @@ -73,6 +73,7 @@ FieldSearcher::FieldSearcher(const FieldIdT & fId, bool defaultPrefix) : _field(fId), _matchType(defaultPrefix ? PREFIX : REGULAR), _maxFieldLength(0x100000), + _currentElementId(0), _currentElementWeight(1), _pureUsAsciiCount(0), _pureUsAsciiFieldCount(0), @@ -85,9 +86,7 @@ FieldSearcher::FieldSearcher(const FieldIdT & fId, bool defaultPrefix) : zeroStat(); } -FieldSearcher::~FieldSearcher() -{ -} +FieldSearcher::~FieldSearcher() = default; bool FieldSearcher::search(const StorageDocument & doc) { @@ -275,6 +274,7 @@ FieldSearcher::IteratorHandler::onPrimitive(uint32_t, const Content & c) { LOG(spam, "onPrimitive: field value '%s'", c.getValue().toString().c_str()); _searcher.setCurrentWeight(c.getWeight()); + _searcher.setCurrentElementId(getArrayIndex()); _searcher.onValue(c.getValue()); } diff --git a/vsm/src/vespa/vsm/searcher/fieldsearcher.h b/vsm/src/vespa/vsm/searcher/fieldsearcher.h index 236382be5f9..2bf976de017 100644 --- a/vsm/src/vespa/vsm/searcher/fieldsearcher.h +++ b/vsm/src/vespa/vsm/searcher/fieldsearcher.h @@ -95,11 +95,13 @@ private: void prepareFieldId(); void setCurrentWeight(int32_t weight) { _currentElementWeight = weight; } + void setCurrentElementId(int32_t weight) { _currentElementId = weight; } bool onSearch(const StorageDocument & doc); virtual void onValue(const document::FieldValue & fv) = 0; FieldIdT _field; MatchType _matchType; unsigned _maxFieldLength; + uint32_t _currentElementId; int32_t _currentElementWeight; // Contains the weight of the current item being evaluated. /// Number of bytes in blocks containing pure us-ascii unsigned _pureUsAsciiCount; @@ -124,7 +126,7 @@ protected: * For each call to onValue() a batch of words are processed, and the position is local to this batch. **/ void addHit(search::QueryTerm & qt, uint32_t pos) const { - qt.add(_words + pos, field(), getCurrentWeight()); + qt.add(_words + pos, field(), _currentElementId, getCurrentWeight()); } public: static search::byte _foldLowCase[256]; |