Shai Erera created LUCENE-5155:
----------------------------------

             Summary: Add OrdinalValueResolver in favor of 
FacetRequest.getValueOf
                 Key: LUCENE-5155
                 URL: https://issues.apache.org/jira/browse/LUCENE-5155
             Project: Lucene - Core
          Issue Type: Improvement
          Components: modules/facet
            Reporter: Shai Erera
            Assignee: Shai Erera


FacetRequest.getValueOf is responsible for resolving an ordinal's value. It is 
given FacetArrays, and typically does something like 
{{arrays.getIntArray()[ord]}} -- for every ordinal! The purpose of this method 
is to allow special requests, e.g. average, to do some post processing on the 
values, that couldn't be done during aggregation.

I feel that getValueOf is in the wrong place -- the calls to getInt/FloatArray 
are really redundant. Also, if an aggregator maintains some statistics by which 
it needs to "correct" the aggregated values, it's not trivial to pass it from 
the aggregator to the request.

Therefore I would like to make the following changes:

* Remove FacetRequest.getValueOf and .getFacetArraysSource
* Add FacetsAggregator.createOrdinalValueResolver which takes the FacetArrays 
and has a simple API .valueOf(ordinal).
* Modify the FacetResultHandlers to use OrdValResolver.

This allows an OVR to initialize the right array instance(s) in the ctor, and 
return the value of the requested ordinal, without doing arrays.getArray() 
calls.

Will post a patch shortly.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to