lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Taylor <paul_t...@fastmail.fm>
Subject Re: What is equivalent to Document.setBoost() from Lucene 3.6 inLucene 4.1 ?
Date Mon, 18 Feb 2013 18:25:49 GMT
On 18/02/2013 16:26, Uwe Schindler wrote:
> The problem is:
> Lucene has never supported *real* per-document boosts. Those boosts were always per-field.
As we only work per-field, it depends on the query how your results score. If you have a TermQuery,
the per-field boost is used (the one from the field queried), but e.g. if you have another
query (like MultiTermQuery) the boost is ignored completely. As it is always per-field, the
results of this per-document boosting differ depending on the number of terms in your query,
so it is not easy to make it consistent.
> To boost a document in Lucene 1.x, 2.x, 3.x, and also 4.x, you have to use a function
query with a per-document value that you have indexed as a separate (ideally as docvalues)
field. In previous Lucene versions, FieldCache was the way to go. This code is a simple wrapper
around your query with CustomScoreQuery and a ValueSource referring to the DocValues field,
5 lines of code -> and it will return consistent results!
>
> Uwe
Thanks bit clearer now, but 5 line example would be nice
And if this is the way to do things isnt the migration doc incorrect

Paul
> -----
> Uwe Schindler
> H.-H.-Meier-Allee 63, D-28213 Bremen
> http://www.thetaphi.de
> eMail: uwe@thetaphi.de
>
>
>> -----Original Message-----
>> From: Paul Taylor [mailto:paul_t100@fastmail.fm]
>> Sent: Monday, February 18, 2013 5:08 PM
>> To: Uwe Schindler
>> Cc: java-user@lucene.apache.org
>> Subject: Re: What is equivalent to Document.setBoost() from Lucene 3.6
>> inLucene 4.1 ?
>>
>> On 18/02/2013 16:04, Uwe Schindler wrote:
>>> It is not a regression, as per-Document boost were never working correctly.
>> If you want to boost documents in a consistent way (and make their scores in
>> search results really using that factor), you should index a DocValues field
>> and use that in a CustomScoreQuery to boost the results with that docvalues
>> field. In Lucene 4.0 (together with other changes) we dropped the "old-
>> style", confusing, and incorrect feature.
>> Well per-Document boost seemed to worked for me with my tests. This new
>> method your propose sounds more complex and is different to what the
>> migration guide says so I don't see that as an improvement.
>>
>> Paul
>>> -----
>>> Uwe Schindler
>>> H.-H.-Meier-Allee 63, D-28213 Bremen
>>> http://www.thetaphi.de
>>> eMail: uwe@thetaphi.de
>>>
>>>
>>>> -----Original Message-----
>>>> From: Paul Taylor [mailto:paul_t100@fastmail.fm]
>>>> Sent: Monday, February 18, 2013 4:54 PM
>>>> To: Ian Lea
>>>> Cc: java-user@lucene.apache.org
>>>> Subject: Re: What is equivalent to Document.setBoost() from Lucene
>>>> 3.6 inLucene 4.1 ?
>>>>
>>>> On 18/02/2013 13:41, Ian Lea wrote:
>>>>> See the migration guide:
>>>>>
>>>>> "If you previously used Document.setBoost, you must now pre-multiply
>>>>> the document boost into each Field.setBoost. If you have a
>>>>> multi-valued field, you should do this only for the first Field
>>>>> instance (ie, subsequent Field instance sharing the same field name
>>>>> should only include their per-field boost and not the document level
>>>>> boost) as the boost for multi-valued field instances are multiplied
>>>>> together by Lucene."
>>>>>
>>>>>
>>>>> --
>>>>> Ian.
>>>>>
>>>>>
>>>>> On Mon, Feb 18, 2013 at 12:17 PM, Paul Taylor
>>>>> <paul_t100@fastmail.fm>
>>>> wrote:
>>>>>> What is equivalent to Document.setBoost() from Lucene 3.6 inLucene
>>>>>> 4.1
>>>> ?
>>>>>> -------------------------------------------------------------------
>>>>>> -- To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>>>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>>>>>
>>>> Thanks, so its more difficult now sounds like a regression to me.
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>


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


Mime
View raw message