lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Troy Collinsworth <troycollinswo...@gmail.com>
Subject Multivalued OR query with equal score/rankings when any one value matches
Date Sat, 23 May 2015 00:34:21 GMT
While trying to query a multivalued String field for multiple values, when
any one value matches the score is higher for the lower value and lower for
the higher. I swapped the value order and it had no affect so it isn't
positional. I want the score to be the same irrespective of the value
matched. I also still want the score highest when both values match. The
solution has to work for 'n' values, not just two as in this example.

solr-5.1.0
<field name="userIds" type="string" indexed="true" stored="true"
required="false" multiValued="true" />

Indexed data and example scores:

"userIds": ["931","890"] "score": 9.600372
"userIds": ["890"] "score": 2.5523214
"userIds": ["931"] "score": 2.247865

The results for 890 and 931 need to have the same score as they each
matched one query value so they will be returned mixed together. I realize
they wont be randomly sorted, however if they at least have the same score
I can recognize and randomize them before use.

Queries:

"q": "userIds:931 OR userIds:890", "fl": "*,score"

The edismax and bq query has the same symptoms.

"defType": "edismax", "fl": "*,score", "bq": "userIds:931 OR userIds:890"

Adding boost values to the query will change the order, but still doesn't
give the desired behavior of results with only one value having equal score
and being mixed together in the results.

"defType": "edismax", "fl": "*,score", "bq": "userIds:931^2 OR
userIds:890^1"

Also tried quoting the values with no effect.

-Troy

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message