diff options
author | Tor Egge <Tor.Egge@yahooinc.com> | 2021-11-10 18:02:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-10 18:02:43 +0100 |
commit | 635427da4c4f37e62e40e77201a87a055485efa2 (patch) | |
tree | 1fa44c16ca39f43502f543e451a325175569da3b /searchlib | |
parent | 57afcdd90f8d799f893de3c06c04a3a18a5515a9 (diff) | |
parent | 3c835425c7f0ff9f9ec5d9e6598b5964d60c829b (diff) |
Merge pull request #19958 from vespa-engine/toregge/extract-field-value-in-inverter-thread
Extract field value in inverter thread.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp | 27 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/memoryindex/invert_task.h | 8 |
2 files changed, 10 insertions, 25 deletions
diff --git a/searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp b/searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp index f120569f615..fb6e1328b8b 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp +++ b/searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp @@ -29,20 +29,10 @@ InvertTask::InvertTask(const DocumentInverterContext& inv_context, const InvertC _context(context), _inverters(inverters), _uri_inverters(uri_inverters), - _field_values(), - _uri_field_values(), + _doc(doc), _lid(lid), _on_write_done(on_write_done) { - _context.set_data_type(_inv_context, doc); - _field_values.reserve(_context.get_fields().size()); - _uri_field_values.reserve(_context.get_uri_fields().size()); - for (auto& document_field : _context.get_document_fields()) { - _field_values.emplace_back(get_field_value(doc, document_field)); - } - for (auto& document_uri_field : _context.get_document_uri_fields()) { - _uri_field_values.emplace_back(get_field_value(doc, document_uri_field)); - } } InvertTask::~InvertTask() = default; @@ -50,17 +40,16 @@ InvertTask::~InvertTask() = default; void InvertTask::run() { - assert(_field_values.size() == _context.get_fields().size()); - assert(_uri_field_values.size() == _context.get_uri_fields().size()); - auto fv_itr = _field_values.begin(); + _context.set_data_type(_inv_context, _doc); + auto document_field_itr = _context.get_document_fields().begin(); for (auto field_id : _context.get_fields()) { - _inverters[field_id]->invertField(_lid, *fv_itr); - ++fv_itr; + _inverters[field_id]->invertField(_lid, get_field_value(_doc, *document_field_itr)); + ++document_field_itr; } - auto uri_fv_itr = _uri_field_values.begin(); + auto document_uri_field_itr = _context.get_document_uri_fields().begin(); for (auto uri_field_id : _context.get_uri_fields()) { - _uri_inverters[uri_field_id]->invertField(_lid, *uri_fv_itr); - ++uri_fv_itr; + _uri_inverters[uri_field_id]->invertField(_lid, get_field_value(_doc, *document_uri_field_itr)); + ++document_uri_field_itr; } } diff --git a/searchlib/src/vespa/searchlib/memoryindex/invert_task.h b/searchlib/src/vespa/searchlib/memoryindex/invert_task.h index b97e6739212..b898deb5c16 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/invert_task.h +++ b/searchlib/src/vespa/searchlib/memoryindex/invert_task.h @@ -5,10 +5,7 @@ #include <vespa/vespalib/util/executor.h> #include <vector> -namespace document { -class Document; -class FieldValue; -} +namespace document { class Document; } namespace vespalib { class IDestructorCallback; } namespace search::memoryindex { @@ -29,8 +26,7 @@ class InvertTask : public vespalib::Executor::Task const InvertContext& _context; const std::vector<std::unique_ptr<FieldInverter>>& _inverters; const std::vector<std::unique_ptr<UrlFieldInverter>>& _uri_inverters; - std::vector<std::unique_ptr<document::FieldValue>> _field_values; - std::vector<std::unique_ptr<document::FieldValue>> _uri_field_values; + const document::Document& _doc; uint32_t _lid; std::remove_reference_t<OnWriteDoneType> _on_write_done; public: |