[ https://issues.apache.org/jira/browse/SOLR-16858?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17798322#comment-17798322 ]
Chris M. Hostetter commented on SOLR-16858: ------------------------------------------- Also, FWIW: * We should definitely open a new jira to track the bug with using {{KnnQParser}} w/ {{PostFilter}} s ** The changes i'm suggesting here would at least provide a workaround for that (by letting users tag/exclude them) ** But I agree, we should really fix the implicit slurping of Solr's {{fq}} params to exclude {{PostFilter}} s — ideally in a way that doesn't preclude the added flexibility & use cases I'm trying to support here. * I used {{fq}} as the local param name purely because that's what this jira originally suggested ** I'd probably prefer something like {{filter}} because it might be better to help convey that this is a different concept from Solr filters – the KNN Pre-filter ** And maybe, someday, we can remove the implicit default slurping and make {{filter}} a mandatory local param? ... maybe? > Allow KnnQParser to selectively apply filters > --------------------------------------------- > > Key: SOLR-16858 > URL: https://issues.apache.org/jira/browse/SOLR-16858 > Project: Solr > Issue Type: Bug > Reporter: Joel Bernstein > Assignee: Chris M. Hostetter > Priority: Major > Labels: hybrid-search > Attachments: SOLR-16858-1.patch, SOLR-16858.patch > > Time Spent: 10m > Remaining Estimate: 0h > > The KnnQParser is parsing the filter query which limits the rows considered > by the vector query with the following method: > {code:java} > private Query getFilterQuery() throws SolrException, SyntaxError { > boolean isSubQuery = recurseCount != 0; > if (!isFilter() && !isSubQuery) { > String[] filterQueries = req.getParams().getParams(CommonParams.FQ); > if (filterQueries != null && filterQueries.length != 0) { > try { > List<Query> filters = QueryUtils.parseFilterQueries(req); > SolrIndexSearcher.ProcessedFilter processedFilter = > req.getSearcher().getProcessedFilter(filters); > return processedFilter.filter; > } catch (IOException e) { > throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e); > } > } > } > return null; > } > {code} > This is pulling all filter queries from the main query parameters and using > them to limit the vector query. This is the automatic behavior of the > KnnQParser. > There are cases where you may want to selectively apply different filters. > One such case is SOLR-16857 which involves reRanking a collapsed query. > Overriding the default filter behavior could be done by adding an "fq" local > parameter to the KnnQParser which would override the default filtering > behavior. > {code:java} > {!knn f=vector topK=10 fq=$kfq}[...]&kfq=myquery > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org