summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp16
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.cpp13
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.h1
3 files changed, 26 insertions, 4 deletions
diff --git a/searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp b/searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp
index a32676baccf..83b26a82a48 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp
@@ -167,12 +167,20 @@ DocumentInverter::invertDocument(uint32_t docId, const Document &doc)
void
DocumentInverter::removeDocument(uint32_t docId)
{
- uint32_t fieldId = 0;
- for (auto &inverter : _inverters) {
+ for (uint32_t fieldId : _schemaIndexFields._textFields) {
+ FieldInverter *inverter = _inverters[fieldId].get();
_invertThreads.execute(fieldId,
- [inverter(inverter.get()), docId]()
+ [inverter, docId]()
{ inverter->removeDocument(docId); });
- ++fieldId;
+ }
+ 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); });
+ ++urlId;
}
}
diff --git a/searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.cpp b/searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.cpp
index d31a69c9ff6..80642ac6330 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.cpp
@@ -354,6 +354,19 @@ UrlFieldInverter::invertField(uint32_t docId, const FieldValue::UP &val)
endDoc();
}
+void
+UrlFieldInverter::removeDocument(uint32_t docId)
+{
+ _all->removeDocument(docId);
+ _scheme->removeDocument(docId);
+ _host->removeDocument(docId);
+ _port->removeDocument(docId);
+ _path->removeDocument(docId);
+ _query->removeDocument(docId);
+ _fragment->removeDocument(docId);
+ _hostname->removeDocument(docId);
+}
+
UrlFieldInverter::UrlFieldInverter(index::Schema::CollectionType collectionType,
FieldInverter *all,
diff --git a/searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.h b/searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.h
index 107000cb775..c5493df541c 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/urlfieldinverter.h
@@ -67,6 +67,7 @@ public:
FieldInverter *hostname);
void invertField(uint32_t docId, const document::FieldValue::UP &field);
+ void removeDocument(uint32_t docId);
void setUseAnnotations(bool useAnnotations) {
_useAnnotations = useAnnotations;