lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Raymi <ra...@gmx.ch>
Subject Re: use query to set filter on fields
Date Tue, 04 Jan 2011 12:30:28 GMT
>> 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.



Mime
View raw message