Hi,

We have search enhancements requests based on search results relevance like -

1. boosting score of recently modified documents.
2. boosting documents which are created/last updated by current session 
user.(OR boosting on basis specific docfield value).
3. boosting documents with a field value in certain range.

these are similar to Solr Function Queries[0] use case. I have logged a 
issue[1].

With Chetan's help I came up with a custom scorer implementation[2], which 
exposes lucene CustomScoreQuery[3] via OSGI and one can implement custom 
ScorerProvider and use it by configuring index definition with custom 
ScorerProvider name.

Implementation details  -

1. ScorerProvider - ScorerProvider creates lucene CustomScoreQuery, which user 
can implement and configure its name in index definition.

2. ScorerProviderFactory - ScorerProviderFactoryImpl  tracks all ScorerProvider 
services bound and looks up for  ScorerProvider from its name.

3. test - customScoreQuery -  boost document with specific docfield value ( in 
this case jcr:createdBy containing 'foo')

Please review and provide feedbacks. Also, this implementation has following 
requirements  -

1. Scorer uses lucene packges(for now exported all lucene packages from 
oak-lucene)
2. Some way to access field names in scorer implementation on the basis of name 
defined in property definition


Thanks

[0] http://wiki.apache.org/solr/FunctionQuery
[1] https://issues.apache.org/jira/browse/OAK-2399
[2] https://github.com/rishabhmaurya/jackrabbit-oak/commit/9042200bd
[3] 
http://lucene.apache.org/core/4_7_1/queries/org/apache/lucene/queries/CustomScoreQuery.html

Reply via email to