I have a need to post process Solr results based on some access controls which are setup outside of Solr, currently we've written something that extends SearchComponent and in the prepare method I'm doing something like this
QueryWrapperFilter qwf = new QueryWrapperFilter(rb.getQuery()); Filter filter = new CustomFilter(qwf); FilteredQuery fq = new FilteredQuery(rb.getQuery(), filter); rb.setQuery(fq); Inside my CustomFilter I have a FilteredDocIdSet which checks if the document should be returned. This works as I expect but for some reason is very very slow. Even if I take out any of the machinery which does any logic with the document and only return true in the FilteredDocIdSets match method the query still takes an inordinate amount of time as compared to not including this custom filter. So my question, is this the most appropriate way of handling this? What should the performance out of such a setup be expected to be? Any information/pointers would be greatly appreciated.