[
https://issues.apache.org/jira/browse/LUCENE-1019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12534038
]
Doron Cohen commented on LUCENE-1019:
-------------------------------------
You could put this logic in your implementation of ValueSource,
possibly constructed over multiple FieldCacheSources -
{code:title=DateDecayQuery over multiple value sources}
public class DateDecayQuery extends CustomScoreQuery {
public DateDecayQuery(Query subQuery) {
super(subQuery, createValSrceQuery());
setStrict(true);
}
private static ValueSourceQuery createValSrceQuery() {
return new ValueSourceQuery(new HalfLifeValSrc());
}
private static class HalfLifeValSrc extends ValueSource {
final ValueSource createdAt = new IntFieldSource("created-at");
final ValueSource halfLife = new IntFieldSource("half-life");
final long now = new Date().getTime() / 1000; // UNIX timestamp;
final double LOG2 = Math.log(2);
public DocValues getValues(final IndexReader reader) throws IOException {
final DocValues valsCreated = createdAt.getValues(reader);
final DocValues valsHalfLife = halfLife.getValues(reader);
return new DocValues(reader.maxDoc()) {
public float floatVal(int doc) {
float vCreated = valsCreated.floatVal(doc);
float vHalfLife = valsHalfLife.floatVal(doc);
return (float) Math.exp(LOG2 * (vCreated - now) / vHalfLife);
}
};
}
}
}
{code}
Though usage is much simpler if this is added to the query.
> CustomScoreQuery should support multiple ValueSourceQueries
> -----------------------------------------------------------
>
> Key: LUCENE-1019
> URL: https://issues.apache.org/jira/browse/LUCENE-1019
> Project: Lucene - Java
> Issue Type: Improvement
> Components: Search
> Affects Versions: 2.2
> Reporter: Kyle Maxwell
> Attachments: CustomMultiQuery.v0.diff, CustomScoreQuery.v1.diff
>
>
> CustomScoreQuery's constructor currently accepts a subQuery, and a
> ValueSourceQuery. I would like it to accept multiple ValueSourceQueries.
> The workaround of nested CustomScoreQueries works for simple cases, but it
> quickly becomes either cumbersome to manage, or impossible to implement the
> desired function.
> This patch implements CustomMultiScoreQuery with my desired functionality,
> and refactors CustomScoreQuery to implement the special case of a
> CustomMultiScoreQuery with 0 or 1 ValueSourceQueries. This keeps the
> CustomScoreQuery API intact.
> This patch includes basic tests, more or less taken from the original
> implementation, and customized a bit to cover the new cases.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]