Thanks for the advice, I will take a look to see if there is some tuning I can do here, I am not terribly concerned about that yet anyway.
My concern still remains with how can I get the scores of the entire matched set. Maybe it is not possible, or perhaps I need to write my own query/match/scorer to do this. Curious is anyone else has tried to implement a similar rollup type search component before. Thanks! Darin > On Nov 28, 2014, at 4:11 PM, Erick Erickson <erickerick...@gmail.com> wrote: > > 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()); >> >>