You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Neil Hooey (JIRA)" <ji...@apache.org> on 2011/05/05 17:37:03 UTC

[jira] [Updated] (SOLR-2499) Index-time boosts for multivalue fields are consolidated

     [ https://issues.apache.org/jira/browse/SOLR-2499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Neil Hooey updated SOLR-2499:
-----------------------------

    Description: 
Currently, if you boost a value in a multivalue field during index time, the boosts are consolidated for every field, and the individual values are lost.

So, for example, given a list of photos with a multivalue field "keywords", and a boost for a keyword assigned to a photo corresponds to the number of times that photo was downloaded after searching for that particular keyword, we have documents like this:

{code}
photo1: Photo of a cat by itself
keywords: [ cat:600 feline:100 ]
=> boost total = 700

photo2: Photo of a cat driving a truck
keywords: [ cat:100 feline:90 animal:80 truck:1000 ]
=> boost total = 1270
{code}

If you search for "cat feline", photo2 will rank higher, since the boost of "cat-like" words was consolidated with the "truck" boost anomaly. Whereas photo1, which has more downloads for "cat" and "feline", ranks lower with a lower consolidated boost, even though the total boost for the relevant keywords is higher than for photo1.

*Intuitively, the boosts should be separate, so only the boosts for the terms searched will be counted.*

Given the current behaviour, you are forced to do one of the following:
1. Assemble all of the multi-values into a string, and use payloads in place of boosts.
2. Use dynamic fields, such as keyword_*, and boost them independently.

Neither of these solutions are ideal, as using payloads requires writing your own BoostingTermQuery, and defining a new dynamic field per multi-value makes searching more difficult than with multivalue fields.

There's a blog entry that describes the current behaviour:
http://blog.kapilchhabra.com/2008/01/solr-index-time-boost-facts-2

  was:
Currently, if you boost a value in a multivalue field during index time, the boosts are consolidated for every field, and the individual values are lost.

So, for example, given a list of photos with a multivalue field "keywords", and a boost for a keyword assigned to a photo corresponds to the number of times that photo was downloaded after searching for that particular keyword, we have documents like this:

{code}
photo1: Photo of a cat by itself
keywords: [ cat:600 feline:100 ]
=> boost total = 700

photo2: Photo of a cat driving a truck
keywords: [ cat:100 feline:90 animal:80 truck:1000 ]
=> boost total = 1270
{code}

If you search for "cat feline", photo2 will rank higher, since the boost of "cat-like" words was consolidated with the "truck" boost anomaly. Whereas photo1, which has more downloads for "cat" and "feline", ranks lower with a lower consolidated boost.

*Intuitively, the boosts should be separate, so only the boosts for the terms searched will be counted.*

Given the current behaviour, you are forced to do one of the following:
1. Assemble all of the multi-values into a string, and use payloads in place of boosts.
2. Use dynamic fields, such as keyword_*, and boost them independently.

Neither of these solutions are ideal, as using payloads requires writing your own BoostingTermQuery, and defining a new dynamic field per multi-value makes searching more difficult than with multivalue fields.

There's a blog entry that describes the current behaviour:
http://blog.kapilchhabra.com/2008/01/solr-index-time-boost-facts-2


> Index-time boosts for multivalue fields are consolidated
> --------------------------------------------------------
>
>                 Key: SOLR-2499
>                 URL: https://issues.apache.org/jira/browse/SOLR-2499
>             Project: Solr
>          Issue Type: Improvement
>    Affects Versions: 3.1, 4.0, Next
>            Reporter: Neil Hooey
>              Labels: boost, multivalue, multivalued
>
> Currently, if you boost a value in a multivalue field during index time, the boosts are consolidated for every field, and the individual values are lost.
> So, for example, given a list of photos with a multivalue field "keywords", and a boost for a keyword assigned to a photo corresponds to the number of times that photo was downloaded after searching for that particular keyword, we have documents like this:
> {code}
> photo1: Photo of a cat by itself
> keywords: [ cat:600 feline:100 ]
> => boost total = 700
> photo2: Photo of a cat driving a truck
> keywords: [ cat:100 feline:90 animal:80 truck:1000 ]
> => boost total = 1270
> {code}
> If you search for "cat feline", photo2 will rank higher, since the boost of "cat-like" words was consolidated with the "truck" boost anomaly. Whereas photo1, which has more downloads for "cat" and "feline", ranks lower with a lower consolidated boost, even though the total boost for the relevant keywords is higher than for photo1.
> *Intuitively, the boosts should be separate, so only the boosts for the terms searched will be counted.*
> Given the current behaviour, you are forced to do one of the following:
> 1. Assemble all of the multi-values into a string, and use payloads in place of boosts.
> 2. Use dynamic fields, such as keyword_*, and boost them independently.
> Neither of these solutions are ideal, as using payloads requires writing your own BoostingTermQuery, and defining a new dynamic field per multi-value makes searching more difficult than with multivalue fields.
> There's a blog entry that describes the current behaviour:
> http://blog.kapilchhabra.com/2008/01/solr-index-time-boost-facts-2

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org