Problem: The NodeSearchService needs a custom implementation. Unfortunately it currently has some quirks:
the $startingPoint argument (which is not part of the NodeSearchServiceInterface!) is actively used and makes this implementation complex/slow with the ESCR
the return type is an array of NodeInterface instances but effectively it is indexed by the corresponding node path
Idea: For a v1 Bastian will try to implement the interface with a custom (DBAL-based) projection and couple of limitations:
The $startingPoint argument won't be supported (if it's specified an exception will be thrown(?))
The result will be limited to 15 nodes (reason: we'll need to interact with the ContentGraph in order to get the node path and this is a rather slow operation)
For the final version we'll probably need a new interface along the lines of SomeClass::someMethod(SearchTerm $term, NodeTypeConstraints $filter, ContentStreamIdentifier $contentStreamId, DimensionSpacePoint $dimensionSpacePoint): Nodes. (note: We might get around the startingPoint-requirement by using a CR per site, see below).
Problem: The
NodeSearchService
needs a custom implementation. Unfortunately it currently has some quirks:$startingPoint
argument (which is not part of theNodeSearchServiceInterface
!) is actively used and makes this implementation complex/slow with the ESCRNodeInterface
instances but effectively it is indexed by the corresponding node pathIdea: For a v1 Bastian will try to implement the interface with a custom (DBAL-based) projection and couple of limitations:
$startingPoint
argument won't be supported (if it's specified an exception will be thrown(?))For the final version we'll probably need a new interface along the lines of
SomeClass::someMethod(SearchTerm $term, NodeTypeConstraints $filter, ContentStreamIdentifier $contentStreamId, DimensionSpacePoint $dimensionSpacePoint): Nodes
. (note: We might get around thestartingPoint
-requirement by using a CR per site, see below).