Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
None
-
None
Description
This is a placeholder for new block join design. Let's comeup with the name first: whether it will be nested child docs or blocks?
Feature Delivery plan
Naming
Nested Documents
Scopes in schema.xml
- fields can be grouped with <scope name="parent" default="true">;
- such fields' scoping is not mandatory, postponable, might cause rbdbms illusion
- it can be any level deep, and fan out any subscopes (a scope name is necessary to distinguish between sons and daugthers subscopes);
- I'm not sure whether name is uniq globally or names in traverse path is unique. I'd like the former;
- btw, maybe type ;
- default attribute is necessary to map existing blocks, which has only one nesting dimension: childrenDocuments;
- fields beside of scopes (global) can appear on any scope. it should work with uniqueKey. What's semantic of uniqueKey across scopes One recently discussed case it searching for child scope documents, when children uniqKeys should not clash;
- root doc uniqueKey spans on whole block (it's necessary to be used as deleteTerm for block updates), but every doc is identified with own uniqueKey (otherwise it's not possible to find it with distributed search)
- coming to roots how many root scopes we can have? I think we can have a few ones that introducing notion of document types.
Updates
- All formats XML, JSON, JSONdoc, Javabin accept nesting in named scopes;
- Current format (unnamed nesting) is supported by default marked scope;
- field are accepted only if they are defined at the certain scope, beside of the global ones. (see consideration above)
Default experience
-
- submitting q=*:*&fl=* responds root documents with all children from all subscopes nested in according to the scopes hierarchy. i.e. [child] is on by default
- fq= aims root docs
Query
- let's follow
ElasticJSON.facet idea, and piggyback on its' request parsing facilities; - this query should contains of nested query nodes, every node represent {!parser param=baram v='input'};
- this syntax should have handy defaluts/shortcut, to search foo:bar in less than fifteen brackets,quotes and commas;
- it should use existing QParsers including {!func} ;
- searching scopes is supported by named scope QParser, handled in this syntax by regular way;
- subscope query should be easily hooked in any occur (should, must, not ) ;
- it should be available in a dedicated [transformer], and support the following scenarios: search parents by certain children, return them nested in response without repeating query, do the same but return all children of selected parents ;
- naming standalone nodes and referencing them is cool.
Update/deletes/uniqueness/versioning
- delete query/id hits root docs, and also nukes subordinate children;
- updating existing root doc completely removes existing subdocs, and replace all of them with the new ones ;
- field update fully rewrites whole doc hierarchy, and can aim any subdoc in hierarchy (this won't be easy, how to identify children?)
- do we need to identify separate subdocs with id? probably yes for field updates
- version should span whole block (If I've got the recent
SOLR-10114right)
Faceting
- subject for support by Json.facet
Named scopes support in DIH
- Old sport, you know.
Inception
comment and the next one
Attachments
Issue Links
- is related to
-
SOLR-12638 Support atomic updates of nested/child documents for nested-enabled schema
- Resolved
-
LUCENE-7674 java.lang.IllegalStateException: Child query must not match same docs with parent filter. Combine them as must clauses (+) to find a problem doc. docId=2147483647, class org.apache.lucene.search.ConjunctionScorer
- Open
- relates to
-
SOLR-5211 updating parent as childless makes old children orphans
- Closed
-
SOLR-5772 duplicate documents between solr "block join" documents and "normal" document
- Open
-
SOLR-7606 ToParentBlockJoinQuery fails with AIOOBE under certain circumstances
- Open
-
SOLR-6700 ChildDocTransformer doesn't return correct children after updating and optimising solr index
- Closed
-
SOLR-6596 Atomic update and adding child doc not working together
- Closed
-
SOLR-6096 Support Update and Delete on nested documents
- Closed
-
SOLR-11244 Query DSL for Solr
- Closed