Erick, your suggestion worked : <requestHandler name="/getSimilar" class="solr.SearchHandler"> <lst name="defaults"> <!-- Query settings --> <str name="title">Hotels Similarity</str> <str name="defType">edismax</str> <str name="rows">5</str> <str name="fl">*,score</str> <str name="fq">active:true</str> <str name="echoParams">explicit</str> <str name="wt">json</str> <str name="q">{!boost b=recip(dist(2,0,star_rating,0,$star_rating),1,10,10)}{!boost b=recip(geodist(lat_lon,$lat,$lon),2,200,20)}{!mlt qf=name,description,facilities,resort,region,dest_level_2 mintf=1 mindf=5 maxqt=50 v=$master_id}</str> <!-- Default Similarity Parameters--> <str name="master_id">0</str> <str name="star_rating">3</str> <str name="lat">0</str> <str name="lon">0</str> </lst> </requestHandler>
Yonik, running debugQuery=on i verified that the default were added before, so basically I can see the default replaced but the one I am sending in the request param take no effect ( as actually the macro disappeared , replaced by the default) . Is maybe because I am inside a block with different query parsers ? Cheers On 30 December 2015 at 15:14, Yonik Seeley <ysee...@gmail.com> wrote: > On Wed, Dec 30, 2015 at 8:37 AM, Alessandro Benedetti > <abenede...@apache.org> wrote: > > I was taking a look to this article from Yonik [1] . > > I like the feature and actually it could useful for some use cases of > mine. > > Started to play with it in Solr 5.4 . > > > > I verified it is working if you pass both the query and the parameters to > > substitute as request parameters. > > > > I verified it is working if you pass both the query and the parameters to > > substitute as defaults or appends for the request handler. > > > > Currently I am not able to make it working the following scenario : > > solrconfig.xml > > > > <requestHandler name="/getSimilar" class="solr.SearchHandler"> > >> <lst name="defaults"> > >> ... > >> <str name="q">{!boost b=recip(dist(2,0,star_rating,0, > >> *${star_rating:3}*),1,10,10)}{!boost b=recip(geodist(lat_lon,*${lat:0}*, > >> *${lon:0}*),2,200,20)}{!mlt > >> qf=name,description,facilities,resort,region,dest_level_2 mintf=1 > mindf=5 > >> maxqt=50}*${master_id:0}*</str> > >> ... > >> </lst> > >> </requestHandler> > > > > > > > > Then I pass in the request the parameter to substitute , like : > > master_id=1 . > > Unfortunately is always getting the default one. > > Hmmm, that's odd. > Macro expansion is done after defaults/appends/invariants are added to > the params, so it should work (although we lack a test for this). > > See RequestUtil.java: > newMap = MacroExpander.expand(newMap); > > If you add echoParams=all to your request, that currently shows the > params post-expansion to verify you're actually getting the default. > > -Yonik > -- -------------------------- Benedetti Alessandro Visiting card : http://about.me/alessandro_benedetti "Tyger, tyger burning bright In the forests of the night, What immortal hand or eye Could frame thy fearful symmetry?" William Blake - Songs of Experience -1794 England