diff options
Diffstat (limited to 'searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp')
-rw-r--r-- | searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp b/searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp index 4f03a5cb95f..127ff1d52c3 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp +++ b/searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp @@ -116,6 +116,7 @@ DocumentInverter::buildFieldPath(const document::DocumentType &docType, void DocumentInverter::invertDocument(uint32_t docId, const Document &doc) { + // Might want to batch inverters as we do for attributes const document::DataType *dataType(doc.getDataType()); if (_indexedFieldPaths.empty() || _dataType != dataType) { buildFieldPath(doc.getType(), dataType); @@ -152,20 +153,31 @@ DocumentInverter::invertDocument(uint32_t docId, const Document &doc) } void -DocumentInverter::removeDocument(uint32_t docId) +DocumentInverter::removeDocument(uint32_t docId) { + LidVector lids; + lids.push_back(docId); + removeDocuments(std::move(lids)); +} +void +DocumentInverter::removeDocuments(LidVector lids) { + // Might want to batch inverters as we do for attributes for (uint32_t fieldId : _schemaIndexFields._textFields) { FieldInverter *inverter = _inverters[fieldId].get(); - _invertThreads.execute(fieldId, [inverter, docId]() { - inverter->removeDocument(docId); + _invertThreads.execute(fieldId, [inverter, lids]() { + for (uint32_t lid : lids) { + inverter->removeDocument(lid); + } }); } uint32_t urlId = 0; for (const auto & fi : _schemaIndexFields._uriFields) { uint32_t fieldId = fi._all; UrlFieldInverter *inverter = _urlInverters[urlId].get(); - _invertThreads.execute(fieldId,[inverter, docId]() { - inverter->removeDocument(docId); + _invertThreads.execute(fieldId, [inverter, lids]() { + for (uint32_t lid : lids) { + inverter->removeDocument(lid); + } }); ++urlId; } |