2011/6/9 Denis Kuzmenok <forward...@ukr.net>: > Hi, everyone. > > I have fields: > text fields: name, title, text > boolean field: isflag (true / false) > int field: popularity (0 to 99999) > > Now i do query: > defType=edismax > start=0 > rows=20 > fl=id,name > q=lg optimus > fq= > qf=name^3 title text^0.3 > sort=score desc > pf=name > bf=isflag sqrt(popularity) > mm=100% > debugQuery=on > > > If i do query like "Samsung" i want to see prior most relevant results > with isflag:true and bigger popularity, but if i do query like "Nokia > 6500" and there is isflag:false, then it should be higher because of > exact match. Tried different combinations, but didn't found one that > suites me. Just got isflag/popularity sorting working or > isflag/relevancy sorting.
Multiplicative boosts tend to be more stable... Perhaps try replacing bf=isflag sqrt(popularity) with bq=isflag:true^10 // vary the boost to change how much isflag counts vs the relevancy score of the main query boost=sqrt(popularity) // this will multiply the result by sqrt(popularity)... assumes that every document has a non-zero popularity You could get more creative in trunk where booleans have better support in function queries. -Yonik http://www.lucidimagination.com