> Hi,
> I have explored
> "DisMaxRequestHandler". It could serve for some
> of my purposes but not all.
> 1) It seems we have to decide that alternative field list
> beforehand
> and declare them in the config.xml . But the field list for
> which
> synonyms are to be considered is not definite ( at least in
> the view
> of declaring manually in the xml ), its getting updated
> frequently
> depending upon the indexed fiels. Anyways if the list is
> too big its
> hard to follow this approach.
>
> 2) I have another issue too.. We could mention city ,
> place, town in
> the dismax declaration, but what if there is another list
> of synonyms
> like .. if the query is "organisation : xyz".. for which I
> would like
> to convert the query to
> organisation:xyz OR company:xyz OR
> institution:xyz .
>
> As far as I explored it is not possible
> to link city, organisation
> to their corresponding synonyms seperately, but we can only
> decalre a
> set of default field names to be searched.
> If I am wrong at any point, please
> let me know.
> Any other suggestions?
> Thanks.
If you want field synonyms seperately, then you can extend
org.apache.solr.handler.component.SearchHandler and override
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp)
{
final String q = req.getParams().get(CommonParams.Q);
String expandedQuery = "process incoming query with string operations e.g. if
q.startsWith(organisation:) ";
ModifiableSolrParams solrParams = new ModifiableSolrParams(req.getParams());
solrParams.set(CommonParams.Q, expandedQuery);
req.setParams(solrParams);
super.handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp);
}
Then register this new request handler in solrconfig.xml and use it.
Does this approach serve your purposes?