diff options
author | Tor Egge <Tor.Egge@online.no> | 2021-11-08 11:34:26 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2021-11-08 11:34:26 +0100 |
commit | 4042bb8b492585aa5f88e780a770fce0d09d9284 (patch) | |
tree | 468c847381c26a8da6506a11728783bd7e198f4e | |
parent | 907dc57275ee0f9ab89336e361e8a65485a5b7de (diff) |
Add comment for connect_contexts().
-rw-r--r-- | searchlib/src/vespa/searchlib/memoryindex/document_inverter_context.cpp | 15 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp | 2 |
2 files changed, 14 insertions, 3 deletions
diff --git a/searchlib/src/vespa/searchlib/memoryindex/document_inverter_context.cpp b/searchlib/src/vespa/searchlib/memoryindex/document_inverter_context.cpp index b75eae51c36..84aeff92bed 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/document_inverter_context.cpp +++ b/searchlib/src/vespa/searchlib/memoryindex/document_inverter_context.cpp @@ -26,10 +26,12 @@ void make_contexts(const SchemaIndexFields& schema_index_fields, ISequencedTaskE using IdMapping = std::vector<std::tuple<ExecutorId, bool, uint32_t>>; IdMapping map; for (uint32_t field_id : schema_index_fields._textFields) { + // TODO: Add bias when sharing sequenced task executor between document types map.emplace_back(executor.getExecutorId(field_id), false, field_id); } uint32_t uri_field_id = 0; for (auto& uri_field : schema_index_fields._uriFields) { + // TODO: Add bias when sharing sequenced task executor between document types map.emplace_back(executor.getExecutorId(uri_field._all), true, uri_field_id); ++uri_field_id; } @@ -62,7 +64,7 @@ public: opt_pusher = pusher_id; } } - + void use_mapping(const std::vector<uint32_t>& fields, std::vector<uint32_t>& pushers) { for (auto field_id : fields) { assert(field_id < _pushers.size()); @@ -79,7 +81,16 @@ PusherMapping::PusherMapping(size_t size) } PusherMapping::~PusherMapping() = default; - + +/* + * Connect contexts for inverting to contexts for pushing. If we use + * different sequenced task executors or adds different biases to the + * getExecutorId() argument (to enable double buffering) then contexts + * for inverting and contexts for pushing will bundle different sets + * of fields, preventing a 1:1 mapping. If we use the same sequenced + * task executor and drop double buffering then we can simplify this + * to a 1:1 mapping. + */ void connect_contexts(std::vector<InvertContext>& invert_contexts, const std::vector<PushContext>& push_contexts, uint32_t num_fields, diff --git a/searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp b/searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp index 93ec3e285bc..2fb1ccf2444 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp +++ b/searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp @@ -26,7 +26,7 @@ InvertTask::InvertTask(const DocumentInverterContext& inv_context, const InvertC for (uint32_t uri_field_id : _context.get_uri_fields()) { uint32_t field_id = schema_index_fields._uriFields[uri_field_id]._all; _uri_field_values.emplace_back(_inv_context.get_field_value(doc, field_id)); - } + } } InvertTask::~InvertTask() = default; |