You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Yonik Seeley (JIRA)" <ji...@apache.org> on 2005/11/30 19:16:30 UTC

[jira] Commented: (LUCENE-446) FunctionQuery - score based on field value

    [ http://issues.apache.org/jira/browse/LUCENE-446?page=comments#action_12358936 ] 

Yonik Seeley commented on LUCENE-446:
-------------------------------------

This newest version simplifies a lot of cruft from the previous version.

A FunctionQuery takes a ValueSource.
The ValueSource produces a DocValues object for a specific IndexReader (It's like a lucene scorer).
The ValueSource is also used as input to functions, which are ValueSources themselves.

So, you can do things (symbolically), like

int(fieldx)
float(fieldx)
ord(fieldx)
rord(fieldx)
linear(fieldx,1,2)
linear(rord(fieldx),1,2,3)
reciprocal(linear(fieldx,1,2),3,4,5)

A useful one for boosting more recent dates might be:
reciprocal(rord(mydatefield),1,1000,1000)

I'm not sure if this is the final form yet... perhaps the division between ValueSource and Query  could be erased such that every value source is a query already (so that you don't need to pass it to a FunctionQuery).

It would also be nice to freely mix a lucene Query and a ValueSource so that you could do something like:
product(luceneQuery, val(fieldx))
  or even
product(luceneQuery1, luceneQuery2)

Of course, I haven't done the "product" function yet... right now, the normal way tocombine with other queries to influence the score is to put it in a boolean query:
+other_lucene_query_clauses +function_query^.1
the score from the function query is added to the other query.


> FunctionQuery - score based on field value
> ------------------------------------------
>
>          Key: LUCENE-446
>          URL: http://issues.apache.org/jira/browse/LUCENE-446
>      Project: Lucene - Java
>         Type: New Feature
>   Components: Search
>     Versions: 1.9
>     Reporter: Yonik Seeley
>  Attachments: function.zip
>
> FunctionQuery can return a score based on a field's value or on it's ordinal value.
> FunctionFactory subclasses define the details of the function.  There is currently a LinearFloatFunction (a line specified by slope and intercept).
> Field values are typically obtained from FieldValueSourceFactory.  Implementations include FloatFieldSource, IntFieldSource, and OrdFieldSource.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


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