Joel,
thank you in advance.

Follows SE code and resultset for each piece. I only change some resultset
values, without change the logic.
I am on Solr 6.6.2.

1. First SE - Inner gatherNodes:

        sort(
            gatherNodes( my_collection, gatherNodes( my_collection,
                search(my_collection, qt="/export", q=*:*,
fl="process_number", sort="process_number asc",  fq=-ancestor:*,
fq=situacao:("On going"), fq=area_pt:("Ciências Exatas e da Terra"),
fq=auxilio_pesquisa_pt:("07;Auxílio Pesquisador|00;Auxilio Pesquisador -
Brasil")),
            walk="process_number->ancestor", trackTraversal="true",
gather="process_number"), walk="node->ancestor", trackTraversal="true",
gather="process_number", scatter="branches, leaves"),
        by="node asc")


{
  "result-set": {
    "docs": [
      {
        "node": "01/09299-2",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "node": "01/11664-0",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "node": "01/19764-4",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "node": "01/20577-4",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "node": "01/21532-4",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "EOF": true,
        "RESPONSE_TIME": 13
      }
    ]
  }
}


2. SE enclosed by "complement"

complement(
    search(my_collection, qt="/export", q=*:*, fl="process_number",
sort="process_number asc",  fq=ancestor:*, fq=situacao:("On going"),
fq=area_pt:("Ciências Exatas e da Terra"),
fq=auxilio_pesquisa_pt:("07;Auxílio Pesquisador|00;Auxilio Pesquisador -
Brasil")),
    sort(
        gatherNodes( my_collection, gatherNodes( my_collection,
            search(my_collection, qt="/export", q=*:*, fl="process_number",
sort="process_number asc",  fq=-ancestor:*, fq=situacao:("On going"),
fq=area_pt:("Ciências Exatas e da Terra"),
fq=auxilio_pesquisa_pt:("07;Auxílio Pesquisador|00;Auxilio Pesquisador -
Brasil")),
        walk="process_number->ancestor", trackTraversal="true",
gather="process_number"), walk="node->ancestor", trackTraversal="true",
gather="process_number", scatter="branches, leaves"),
    by="node asc"),
on="process_number=node")


{
  "result-set": {
    "docs": [
      {
        "process_number": "01/02444-7"
      },
      {
        "process_number": "01/08149-7"
      },
      {
        "process_number": "01/21749-3"
      },
      {
        "process_number": "01/22503-8"
      },
      {
        "EOF": true,
        "RESPONSE_TIME": 18
      }
    ]
  }
}

3. Fetch some extra data:

fetch(my_collection, select(
    complement(
        search(my_collection, qt="/export", q=*:*, fl="process_number",
sort="process_number asc",  fq=ancestor:*, fq=situacao:("On going"),
fq=area_pt:("Ciências Exatas e da Terra"),
fq=auxilio_pesquisa_pt:("07;Auxílio Pesquisador|00;Auxilio Pesquisador -
Brasil")),
        sort(
            gatherNodes( my_collection, gatherNodes( my_collection,
                search(my_collection, qt="/export", q=*:*,
fl="process_number", sort="process_number asc",  fq=-ancestor:*,
fq=situacao:("On going"), fq=area_pt:("Ciências Exatas e da Terra"),
fq=auxilio_pesquisa_pt:("07;Auxílio Pesquisador|00;Auxilio Pesquisador -
Brasil")),
            walk="process_number->ancestor", trackTraversal="true",
gather="process_number"), walk="node->ancestor", trackTraversal="true",
gather="process_number", scatter="branches, leaves"),
        by="node asc"),
    on="process_number=node"),
process_number as node),fl="type_status_facet , amount",
on="node=process_number",)

{
  "result-set": {
    "docs": [
      {
        "node": "01/02444-7",
        "type_status_facet ": "Ongoing projetcs",
        "amount": 154620
      },
      {
        "node": "01/08149-7",
        "type_status_facet ": "Ongoing projetcs",
        "amount": 131115
      },
      {
        "node": "01/21749-3",
        "type_status_facet ": "Ongoing projetcs",
        "amount": 157300
      },
      {
        "node": "01/22503-8",
        "type_status_facet ": "Ongoing projetcs",
        "amount": 154800
      },
      {
        "EOF": true,
        "RESPONSE_TIME": 24
      }
    ]
  }
}

4. Trying to gather more nodes. Here is the problem, the resultset comes
from the inner gatherNodes.

gatherNodes( my_collection, gatherNodes( my_collection,
    fetch(my_collection, select(
        complement(
            search(my_collection, qt="/export", q=*:*, fl="process_number",
sort="process_number asc",  fq=ancestor:*, fq=situacao:("On going"),
fq=area_pt:("Ciências Exatas e da Terra"),
fq=auxilio_pesquisa_pt:("07;Auxílio Pesquisador|00;Auxilio Pesquisador -
Brasil")),
            sort(
                gatherNodes( my_collection, gatherNodes( my_collection,
                    search(my_collection, qt="/export", q=*:*,
fl="process_number", sort="process_number asc",  fq=-ancestor:*,
fq=situacao:("On going"), fq=area_pt:("Ciências Exatas e da Terra"),
fq=auxilio_pesquisa_pt:("07;Auxílio Pesquisador|00;Auxilio Pesquisador -
Brasil")),
                walk="process_number->ancestor", trackTraversal="true",
gather="process_number"), walk="node->ancestor", trackTraversal="true",
gather="process_number", scatter="branches, leaves"),
            by="node asc"),
        on="process_number=node"),
    process_number as node),fl="type_status_facet , amount",
on="node=process_number"),
walk="node->ancestor", trackTraversal="true", gather="process_number"),
walk="node->ancestor", trackTraversal="true", gather="process_number",
scatter="branches, leaves")

{
  "result-set": {
    "docs": [
      {
        "node": "01/20577-4",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "node": "01/19764-4",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "node": "01/09299-2",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "node": "01/21532-4",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "node": "01/11664-0",
        "collection": "my_collection",
        "field": "process_number",
        "ancestors": [],
        "level": 0
      },
      {
        "EOF": true,
        "RESPONSE_TIME": 30
      }
    ]
  }
}




5. Just one more information, maybe not necessary.
 Enclose step 3 wiht rollup. Check "level" field on the result-set, it is
NULL


rollup(having(sort(
    fetch(my_collection, select(
        complement(
            search(my_collection, qt="/export", q=*:*, fl="process_number",
sort="process_number asc",  fq=ancestor:*, fq=situacao:("On going"),
fq=area_pt:("Ciências Exatas e da Terra"),
fq=auxilio_pesquisa_pt:("07;Auxílio Pesquisador|00;Auxilio Pesquisador -
Brasil")),
            sort(
                gatherNodes( my_collection, gatherNodes( my_collection,
                    search(my_collection, qt="/export", q=*:*,
fl="process_number", sort="process_number asc",  fq=-ancestor:*,
fq=situacao:("On going"), fq=area_pt:("Ciências Exatas e da Terra"),
fq=auxilio_pesquisa_pt:("07;Auxílio Pesquisador|00;Auxilio Pesquisador -
Brasil")),
                walk="process_number->ancestor", trackTraversal="true",
gather="process_number"), walk="node->ancestor", trackTraversal="true",
gather="process_number", scatter="branches, leaves"),
            by="node asc"),
        on="process_number=node"),
    process_number as node),fl="type_status_facet , amount",
on="node=process_number"),
by="level asc, type_status_facet  asc"),gt(if(eq(amount,null), 0,
amount),0)), over="level, type_status_facet ", sum(amount), count(*))

{
  "result-set": {
    "docs": [
      {
        "sum(amount)": 597835,
        "count(*)": 4,
        "type_status_facet ": "Ongoing projetcs",
        "level": "NULL"
      },
      {
        "EOF": true,
        "RESPONSE_TIME": 26
      }
    ]
  }
}

Em qua, 10 de abr de 2019 às 16:49, Joel Bernstein <joels...@gmail.com>
escreveu:

> What you're trying to do should work. Possibly of you provide more detail
> like the full query with some sample outputs I might be able to see what
> the issue is.
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
>
> On Wed, Apr 10, 2019 at 10:55 AM Kojo <rbsnk...@gmail.com> wrote:
>
> > Hello everybody I have a question about Streaming Expression/Graph
> > Traversal.
> >
> > The following pseudocode works fine:
> >
> > complement( search(),
> >     sort(
> >         gatherNodes( collection, search())
> >     ),
> > )
> >
> >
> > However, when I feed the SE resultset above to another gatherNodes
> > function, I have a result different from what I expected. It returns the
> > root nodes (branches) of the inner gatherNodes:
> >
> > gatherNodes( collection,
> >     complement( search(),
> >         sort(
> >            gatherNodes( collection, search())
> >         ),
> >     ),
> > )
> >
> > In the case I tested, the outer gatherNodes does not have leaves. I was
> > waiting to have the result from the "complement" function as the root
> nodes
> > of the outter gatherNodes function. Do you know how can I achieve this?
> >
> > Thank you,
> >
>

Reply via email to