diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-01-18 15:47:16 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-01-18 15:49:24 +0000 |
commit | 7572116c9c76967ec986803103bcbc3427083762 (patch) | |
tree | fd5a3e5fcffe2de35161958413065faf4c11eec6 /searchcore | |
parent | 305dd6ca6dd90d8cf1a1f51c6d8575d5f2b3ee67 (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.cpp | 9 |
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; |