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

Reply via email to