Parent-child construct is a very helpful building block, where an information that is common to many documents is stored in a single parent document, and is accessible by all children document. A similar feature also exists in ElasticSearch.
In general a search on a child document can be filtered based on values in the parent document that are imported to the child.
One pitfall is not supporting text match filtering as only attribute fields can be imported from the parent.
Limitations of imported parent fields are as follows:
only (in-memory) attribute fields can be imported from parent documents;
normalization, tokanization, and stemming are disabled for attributes fields;
can use word match (like exact matching with some advancements like *);
can use fast search to optimize performance (b-tree posting lists instead of scanning all attributes values);
but cannot use text match (only works with index fields).
We would like to suggest adding support for text indexing and search also at the parent document.
This could be helpful for a recommendation system we are developing, but can be useful for many other applications that use vespa as their search and storage system.
Parent-child construct is a very helpful building block, where an information that is common to many documents is stored in a single parent document, and is accessible by all children document. A similar feature also exists in ElasticSearch.
In general a search on a child document can be filtered based on values in the parent document that are imported to the child. One pitfall is not supporting text match filtering as only attribute fields can be imported from the parent.
Limitations of imported parent fields are as follows:
We would like to suggest adding support for text indexing and search also at the parent document. This could be helpful for a recommendation system we are developing, but can be useful for many other applications that use vespa as their search and storage system.