I suppose it would help if I populated the list I try to remove things
from....I believe it's working once I did that.  Now that this is out
there, is there a better way to do something like this?

On Fri, Mar 2, 2012 at 10:19 PM, Jamie Johnson <jej2...@gmail.com> wrote:
> On a previous version of a solr snapshot we had a custom component
> which did the following
>
>
>                boolean fsv =
> req.getParams().getBool(ResponseBuilder.FIELD_SORT_VALUES,false);
>            if(fsv){
>                NamedList sortVals = (NamedList) 
> rsp.getValues().get("sort_values");
>                if(sortVals != null){
>                        Sort sort = 
> searcher.weightSort(rb.getSortSpec().getSort());
>                        SortField[] sortFields = sort==null ? new
> SortField[]{SortField.FIELD_SCORE} : sort.getSort();
>
>                        for (SortField sortField: sortFields) {
>                                String fieldname = sortField.getField();
>                                if(sortVals.get(fieldname) == null)
>                                        continue;
>                                ArrayList<Object> list = (ArrayList<Object>) 
> sortVals.get(fieldname);
>                                list.removeAll(filteredDocs);
>
>                        }
>                }
>            }
>
> where filteredDocs is an ArrayList of integers containing the
> documents to remove from sort vals.  On the current solr on trunk
> sortVals is now an Object[].  I had tried to update by I had thought
> that doing the following would provide the same result, but alas it
> does not.  Am I missing something that should be happening here?
>
>
>                boolean fsv =
> req.getParams().getBool(ResponseBuilder.FIELD_SORT_VALUES,false);
>            if(fsv){
>                NamedList sortVals = (NamedList) 
> rsp.getValues().get("sort_values");
>                if(sortVals != null){
>                        Sort sort = 
> searcher.weightSort(rb.getSortSpec().getSort());
>                        SortField[] sortFields = sort==null ? new
> SortField[]{SortField.FIELD_SCORE} : sort.getSort();
>
>                        for (SortField sortField: sortFields) {
>                                String fieldname = sortField.getField();
>                                if(sortVals.get(fieldname) == null)
>                                        continue;
>                                Object[] sortValue = 
> (Object[])sortVals.get(fieldname);
>                                List<Object> sortValueList = new 
> ArrayList<Object>(sortValue.length);
>                                sortValueList.removeAll(filteredDocs);
>
>                                sortVals.remove(fieldname);
>                                sortVals.add(fieldname, 
> sortValueList.toArray());
>
>                        }
>                }
>            }

Reply via email to