: Boost Query (bq) accepts lucene queries. E.g. bq=price:[50 TO 100]^100
: boost and bf parameters accept Function queries, e.g. boost=log(popularity) 

while these statements are both true, they don't tell the full story.

for example you can also specify a function as a query using the 
appropriate parser:  bq={!func}log(popularity)

or turn any query into a function that produces values according to the 
query score:  boost=query({!lucene v='price:[50 TO 100]^100'})


The fundemental difference between bq & boost is:

  "bq" causes a an additional 'boost query' clause to be *added* to your 
  original query 

  "boost" causes the scores for each doc from your original to 
  be *multiplied* by the results of the specified function evaluated 
  against the same doc.

(in both cases "original query" refers to your "q" param 
parsed with respects to qf, pf, etc...)

So a query like this...

   q={!edismax}bar & qf=foo & bq=x:y

...is roughly equivilent to:  q={!lucene}+foo:bar x:y 


While a query like this...

   q={!edismax}bar & qf=foo & boost=query({!lucene v='x:y'})

...is roughly equivilent to... 

   q={!func}prod(query({!edismax qf='foo' v='bar'}), query({!lucene v='x:y'}))


because of how they affect final scores, the 'boost' param is almost 
always what you really want and is really nothing more then shorthand for 
wrapping your entire query in a "BoostQParser" ...

https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-BoostQueryParser





-Hoss
http://www.lucidworks.com/

Reply via email to