Hi

If I run a main query "cheeze" jointly with a boost query "bq=spell:"cheeze" 
(boosting results with spell field "cheeze"), as

/select?fl=title&qf=main&bq=spell:"cheeze"&bq=trans:"cheeze"&q=cheeze

everything works fine. And defType=dismax

What I'd like to do is to programmatically generate the bq query inside a 
custom searchcomponent's "process" method and issue the query similar to above. 
I can achieve my goal with explicitly constructing and running a query as 
follows

                StringBuilder QueryStr = new StringBuilder();
                QueryStr.append("echoParams=none");
                QueryStr.append("&debugQuery=off");
                QueryStr.append("&defType=dismax");
                QueryStr.append("&df=main");
                QueryStr.append("&q="+token);
                QueryStr.append("&bq=spell:"+token); 
                QueryStr.append("&bq=trans:"+token); 
                SolrParams query = 
SolrRequestParsers.parseQueryString(QueryStr.toString());

                rb.req.setParams(query);            
                Query q = QParser.getParser(token, defType, rb.req).parse();
                DocList hits = 
searcher.getDocList(q,rb.getFilters(),Sort.RELEVANCE,offset,rows,fieldFlags);
                        

But is there a way to directly set the request What would be the best way to do 
this?

        public void process(ResponseBuilder rb) throws IOException {
 
        ...

        String token = rb.req.getParams().get("token");

        String bqfield = rb.req.getParams().get(DisMaxParams.BQ);       
        
        .....

        Query q = QParser.getParser(token, defType, rb.req).parse();
                        
        DocList hits = 
searcher.getDocList(q,rb.getFilters(),Sort.RELEVANCE,offset,rows,fieldFlags);

        }


without having to explicitly constructing the query?

thank you 

Peyman

Reply via email to