Github user dsmiley commented on a diff in the pull request:
https://github.com/apache/lucene-solr/pull/416#discussion_r204764287
--- Diff:
solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
---
@@ -91,15 +100,37 @@ public DocTransformer create(String field, SolrParams
params, SolrQueryRequest r
Query childFilterQuery = null;
if(childFilter != null) {
- try {
- childFilterQuery = QParser.getParser( childFilter, req).getQuery();
- } catch (SyntaxError syntaxError) {
- throw new SolrException( ErrorCode.BAD_REQUEST, "Failed to create
correct child filter query" );
+ if(buildHierarchy) {
+ childFilter = buildHierarchyChildFilterString(childFilter);
+ return new DeeplyNestedChildDocTransformer(field, parentsFilter,
req,
+ getChildQuery(childFilter, req), limit);
}
+ childFilterQuery = getChildQuery(childFilter, req);
+ } else if(buildHierarchy) {
+ return new DeeplyNestedChildDocTransformer(field, parentsFilter,
req, null, limit);
}
return new ChildDocTransformer( field, parentsFilter, uniqueKeyField,
req.getSchema(), childFilterQuery, limit);
}
+
+ private static Query getChildQuery(String childFilter, SolrQueryRequest
req) {
+ try {
+ return QParser.getParser( childFilter, req).getQuery();
+ } catch (SyntaxError syntaxError) {
+ throw new SolrException( ErrorCode.BAD_REQUEST, "Failed to create
correct child filter query" );
+ }
+ }
+
+ protected static String buildHierarchyChildFilterString(String
queryString) {
--- End diff --
When writing parsing code like this, it helps tremendously to add a comment
showing the example input. Here you could also comment on what the resulting
query would be.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]