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);
}

Ok. Thank you very much for your help and the starting points. I'll give it a try. Maybe I come up with a smarter way than my "brute force" algorithm.


Reply via email to