Because you're fetching and decompressing the doc from disk. Grouping etc.
Do their work from _indexed_ terms, which are already in memory. Two
different things.

If I'm reading this right on a quick scan...

Best
Erick
On Nov 28, 2014 10:21 AM, "Darin Amos" <dari...@gmail.com> wrote:

> Hi Eric,
>
> I am curious why this would b considered an anti-patern to check a stored
> valued for every matching document. Is this not what the facet query
> component is doing anyway so it can get the total counts?
>
> Grouping doesn’t solve the issue because again, I will only see groups for
> the items returned, not all matching documents.
>
> I am using a product that has SOLR 4.3 embedded into it, so I cannot
> upgrade to 4.9 or 4.10 and take advantage of the parent/child feature added
> recently.
>
> Thanks!
>
> Darin
>
> > On Nov 28, 2014, at 12:03 PM, Erick Erickson <erickerick...@gmail.com>
> wrote:
> >
> > Does grouping work for you here? Because
> > even if you solve this problem, if I'm reading
> > this right you're going to fetch stored values
> > for every doc that matches the query, which
> > is an anti-pattern big-time, consider *:*....
> >
> > Of course I did a very quick skim, so maybe
> > I'm all wet....
> >
> > Best,
> > Erick
> >
> > On Thu, Nov 27, 2014 at 5:28 PM, Darin Amos <dari...@gmail.com> wrote:
> >> Hello,
> >>
> >> I am trying to implement a Rollup Search component on a version of SOLR
> that exists previously to the parent/child additions, so I am trying to
> implement my own. The searches will be executed exclusively against the
> child documents, and I want to “rollup” those child documents into the
> parent documents.
> >>
> >> The interface is going to allow the user to add the following
> parameters to the SOLR query:
> >>
> >> &rollup=true&rollup.parentField=id&rollup.childField=parentId
> >>
> >> My code so far is below. What I have works so far, except my second
> parent query loses the order. I would like to be able to sort my parent
> query by the score of the previous child search. Perhaps I would take the
> highest score from all children (haven’t decided yet). My problem however
> is that I don’t know how I can get the score from all the hits in the
> original search, just what is returned. If my child query gets 10,000 hits,
> but only return 100 records, I can’t get all the scores I need.
> >>
> >> Does anyone have any recommendations?
> >>
> >> Thanks!!
> >> Darin
> >>
> >>
> >>                        //Loop through all the records and look for the
> parent reference field
> >>                        Set<String> parentRefs = new HashSet<String>();
> >>                        DocIterator docSetIterator =
> rb.getResults().docSet.iterator();
> >>                        while(docSetIterator.hasNext()){
> >>                                int docInt = docSetIterator.next();
> >>                                String fieldValues[] =
> rb.req.getSearcher().doc(docInt).getValues(childFieldName);
> >>
> >>                                for(String fieldValue : fieldValues){
> >>                                        if(fieldValue != null &&
> fieldValue.length() > 0 && !parentRefs.contains(fieldValue)){
> >>
> parentRefs.add(fieldValue);
> >>                                        }
> >>                                }
> >>                        }
> >>
> >>                        //Build a boolean query of term queries
> >>                        BooleanQuery parentQuery = new BooleanQuery();
> >>                        Iterator<String> parentIdIterator =
> parentRefs.iterator();
> >>                        while(parentIdIterator.hasNext()){
> >>                                String parentId =
> parentIdIterator.next();
> >>                                TermQuery termQuery = new TermQuery(new
> Term(parentFieldName, parentId));
> >>                                parentQuery.add(termQuery,
> BooleanClause.Occur.SHOULD);
> >>                        }
> >>
> >>
> >>                        DocList parentList =
> searcher.getDocList(parentQuery, new ArrayList<Query>(), null, 0, 100, 1);
> //TODO: use correct start/end/flags later...
> >>
> >>                        //Add parent results
> >>                    ResultContext resultContext = new ResultContext();
> >>                    resultContext.docs = parentList;
> >>                    resultContext.query = parentQuery;
> >>                    rb.rsp.add("parents", resultContext);
> >>                    rb.rsp.getToLog().add("hits", parentList.matches());
>
>

Reply via email to