> I'm not sure, whether I made myself very clear. I don't > think that it is difficult to evaluate the query. Here's a > (very inefficient) algorithm in pseudocode that would do, > what I have in mind: > > query = ... > > foreach (term in query) > foreach (field in SOLR.config.fields) > result = SOLR.query(field:term) > if result.size > 0 > filters.addFilter(field=term) > break > end > end > end > > return SOLR.filter(filters)
Okey if you have already something, I think simplest place to put this is a custom search handler. http://wiki.apache.org/solr/SolrPlugins Other option can be QParserPlugin. public final class CustomSearchHandler extends SearchHandler { @Override public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws IOException, ParseException, InstantiationException, IllegalAccessException { ModifiableSolrParams solrParams = new ModifiableSolrParams(req.getParams()); String query = req.getParams().get(CommonParams.Q, "*:*"); foreach (term in query) foreach (field in SOLR.config.fields) => http://wiki.apache.org/solr/LukeRequestHandler result = SOLR.query(field:term) if result.size > 0 filters.addFilter(field=term) => solrParams.add(CommonParams.FQ, "field:term"); break end end end req.setParams(solrParams); super.handleRequestBody(req, rsp); }