Hi,

I am trying to understand how the boost (and bq) parameters are supposed to 
work.
My application searches our product schema and returns the best matches. To 
enable an exactish match on product name we created fields that are minimally 
tokenized (keyword tokenizer/lowercase). Now I want the search to boost results 
that match on those fields. I thought that either the boost or bq parameter 
would work. I found very few good examples of the boost parameter used on a 
query. A lot of permutations resulted in errors such as this:
org.apache.solr.search.SyntaxError: Infinite Recursion detected parsing query 
'ethyl alcohol'

I am using Solr 7.2 and the eDismax query parser.
I have gotten boost to work, sort of, it really changes the query results in a 
bad way. I'm sure that I'm doing something wrong. Here is an example of my 
boost parameter
boost=product(query({!edismax qf="search_en_p_pri_name_min 
search_en_root_name_min" v=$q boost=}, 0),10000)

When I search for "ethyl alcohol" products named "ethyl alcohol" come first, 
which is what I want. We have a range of ethyl alcohol products. Normally I 
expect to see "ethyl alcohol, pure" and "ethyl alcohol, dnatured" after the 
initial "ethyl alcohol" and I see this without the boost. With the boost I get 
"ethyl alcohol" with a score of, 3.87201088E8. The second hit is "Brilliant 
Cresyl blue" with a score of 0. All subsequent hits have a 0

Why are there any matches returned with a score of 0? Why are these hits with a 
0 score being returned at all? Especially when more relevant matches are not 
being returned? I suspect that there is something wrong with my boost function, 
but it looks right. However if I take it and instead submit the function shown 
above as a bf parameter I get a syntax error:
bf=product(query({!edismax qf="search_en_p_pri_name_min 
search_en_root_name_min" v=$q bf=}),10000)
org.apache.solr.search.SyntaxError: Expected identifier at pos 23 
str='product(query({!edismax'"

>From the documentation I expected that the bf and boost parameters only 
>differed as to how the result was boosted with boost being multiplicative and 
>the bf being additive, but I cannot find an equivalent which actually works 
>with the bf parameter.

The bq parameter doesn't throw an error, but it doesn't seem to have any effect 
in how the results are ordered.

What am I doing wrong? Why does the boost parameter return garbage hits with 0 
score? What would work as a bf parameter function?

Reply via email to