aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahooinc.com>2021-11-10 18:02:43 +0100
committerGitHub <noreply@github.com>2021-11-10 18:02:43 +0100
commit635427da4c4f37e62e40e77201a87a055485efa2 (patch)
tree1fa44c16ca39f43502f543e451a325175569da3b
parent57afcdd90f8d799f893de3c06c04a3a18a5515a9 (diff)
parent3c835425c7f0ff9f9ec5d9e6598b5964d60c829b (diff)
Merge pull request #19958 from vespa-engine/toregge/extract-field-value-in-inverter-thread
Extract field value in inverter thread.
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp27
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/invert_task.h8
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: