summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-01-18 15:47:16 +0000
committerArne H Juul <arnej@yahooinc.com>2022-01-18 15:49:24 +0000
commit7572116c9c76967ec986803103bcbc3427083762 (patch)
treefd5a3e5fcffe2de35161958413065faf4c11eec6 /searchcore
parent305dd6ca6dd90d8cf1a1f51c6d8575d5f2b3ee67 (diff)
add special '[document]' fieldset
* specially handled like [all] and [docid] * depends on the document type having a configured fieldset named '[document]' * should make it possible to run vespa-visit -l '[document]' and get only the fields declared inside the document for any and all document types.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp b/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp
index 6285f4ce70f..d3778b4d745 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp
@@ -127,6 +127,7 @@ DocumentRetriever::needFetchFromDocStore(const FieldSet & fieldSet) const {
case FieldSet::Type::NONE:
case FieldSet::Type::DOCID:
return false;
+ case FieldSet::Type::DOCUMENT_ONLY:
case FieldSet::Type::ALL:
return ! _areAllFieldsAttributes;
case FieldSet::Type::FIELD: {
@@ -257,6 +258,14 @@ DocumentRetriever::getPartialDocument(search::DocumentIdT lid, const document::D
populate(lid, *doc, set.getFields());
break;
}
+ case FieldSet::Type::DOCUMENT_ONLY: {
+ const auto * actual = getDocumentType().getFieldSet(document::DocumentOnly::NAME);
+ if (actual != nullptr) {
+ const auto &set = actual->asCollection();
+ populate(lid, *doc, set.getFields());
+ }
+ break;
+ }
case FieldSet::Type::NONE:
case FieldSet::Type::DOCID:
break;