|
|
-
Caching filter question / code reviewMark 2011-03-10, 01:49
I created the following SearchComponent that wraps a deduplicate filter
around the current query and added it to last-components. It appears to be working, but is there any way I can improve the performance? Would this be considered and added to the filtercache? Am I even caching correctly? Thanks for any input/suggestions ... private Map<String, Filter> filtersByField = new HashMap<String, Filter>(); @Override public void prepare(ResponseBuilder rb) throws IOException { SolrParams params = rb.req.getParams(); if (params.getBool(DuplicateParams.DEDUPLICATE, false)) { String field = params.get(DuplicateParams.DUPLICATE_FIELD); if (field == null) { throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Deduplicate field is required"); } Filter filter = filtersByField.get(field); if (filter == null) { filter = new CachingWrapperFilter(new DuplicateFilter(field, DuplicateFilter.KM_USE_FIRST_OCCURRENCE, DuplicateFilter.PM_FAST_INVALIDATION)); filtersByField.put(field, filter); } rb.getFilters().add(new FilteredQuery(rb.getQuery(), filter)); } } ... |