lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sowmya V.B." <vbsow...@gmail.com>
Subject Re: Boosting a document at query time, based on a field value/range
Date Wed, 15 Jun 2011 15:43:37 GMT
Hi

Thanks for the tip.

I tried what you suggested. But, I get the same results as filtering the
results on the range of values of a given field, but with different scores
now.

1) Here is an example query I gave to Query parser:

newtextQuery = textQuery + "  OR " +  field +":[" + frompercent+ " TO " +
topercent + "]^" + myBoost;
(Where textQuery is what the user gave, field, frompercent, topercent,
myboost : are the variables in the code)

A Lucene query for this was something like:
Query New: ((text:space title:space text.stem:space) field4:[1.0 TO
37.0]^10.0)

2) Here is what I did when I used a filter:
-used a longtrierangefilter, to filter results based on the range obtained
by "frompercent" to "topercent", for the same query

Basically, the results for both the methods are the same ranked documents,
albeit with different scores.

Am I missing something here??



-----------------------
The boost is something you do with your query, before it is issued to
the searcher.

If you use the query parser, you can provide the *additional* query
parameters by concatenating them to the standard user query:
String fullQuery = userQuery
  + " OR myrange:[" + from + " TO " + to + "30]^" + myBoost;

If you build your Query by code, you can use ConstantScoreRangeQuery or
RangeQuery for the range part, where you can call setBoost(float).

- Toke Eskildsen


On Wed, Jun 15, 2011 at 11:22 AM, Sowmya V.B. <vbsowmya@gmail.com> wrote:

> Hi
>
> I am not getting the replies to my inbox ...hence the delay in responding.
>
> >>I think you misunderstand Eric's answer, as his suggestion does exactly
> what you ask for. Have you tried the "OR **field**:[20 TO 30]^10" method?
>
> Well, my question is partly answered with this clarification. But, I am
> still wondering how to do that programmatically.
> the (20-30) range is not a fixed range. Its chosen by the user. It can as
> well be (12-34) too. I am not able to figure out if there is any function in
> the searcher classs, which will enable me give these specifications
> ...something like... a setboost(), which exists during index time.
>
> S.
>
> On Fri, Jun 10, 2011 at 10:38 AM, Sowmya V.B. <vbsowmya@gmail.com> wrote:
>
>> Hi Erick
>>
>> Thanks for the response.
>>
>> I would want the documents with values within #20-30# be ranked above the
>> documents with some other values.
>> Well, since there might be a case where there are no documents in that
>> range, I would also prefer to have other documents listed too, somewhere
>> lower down the rankings.
>>
>> Also, I don't want to do a simple sort on the results what lucene gives,
>> with its own ranking function.
>> I am looking for a possibility of boosting a given document at query-time,
>> based on the values of a particular field : instead of plainly sorting the
>> normal lucene results based on this field.
>> Is that possible, without going in to the scoring function?
>>
>> Sowmya.
>>
>> *************
>> I take it from this that you want documents with values #outside# 20-30
>> to still be found? In that case you can do something like add a clause
>> like:
>>
>> OR *field*:[20 TO 30]^10
>>
>> or similar.
>>
>> Best
>> Erick
>>
>> On Thu, Jun 9, 2011 at 5:10 PM, Sowmya V.B. <vbsowmya@gmail.com> wrote:
>>
>>> Hi All
>>>
>>> I have joined the group only today..and began working with lucene only
>>> recently.
>>>
>>> My problem: I want to boost the ranking of certain documents, based on
>>> the values of certain fields.
>>>
>>> For example, if the field has  a range of values from 0 to 100 and the
>>> user chooses something like 20 to 30, as an option, along with the query; I
>>> want the documents which satisfy that condition (The field value being
>>> between 20 and 30) to get a boost during ranking.
>>>
>>> Is there a way to do that in Lucene? I could not find an understandable
>>> explanation in the past mails about this. Hence, starting a fresh thread.
>>>
>>> Sowmya.
>>>
>>> --
>>> Sowmya V.B.
>>> ----------------------------------------------------
>>> Losing optimism is blasphemy!
>>> http://vbsowmya.wordpress.com
>>> ----------------------------------------------------
>>>
>>
>>
>>
>> --
>> Sowmya V.B.
>> ----------------------------------------------------
>> Losing optimism is blasphemy!
>> http://vbsowmya.wordpress.com
>> ----------------------------------------------------
>>
>
>
>
> --
> Sowmya V.B.
> ----------------------------------------------------
> Losing optimism is blasphemy!
> http://vbsowmya.wordpress.com
> ----------------------------------------------------
>



-- 
Sowmya V.B.
----------------------------------------------------
Losing optimism is blasphemy!
http://vbsowmya.wordpress.com
----------------------------------------------------

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