summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2021-11-08 11:34:26 +0100
committerTor Egge <Tor.Egge@online.no>2021-11-08 11:34:26 +0100
commit4042bb8b492585aa5f88e780a770fce0d09d9284 (patch)
tree468c847381c26a8da6506a11728783bd7e198f4e
parent907dc57275ee0f9ab89336e361e8a65485a5b7de (diff)
Add comment for connect_contexts().
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/document_inverter_context.cpp15
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/invert_task.cpp2
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;