[ 
https://issues.apache.org/jira/browse/LUCENE-5339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13833596#comment-13833596
 ] 

Gilad Barkai commented on LUCENE-5339:
--------------------------------------

Been away from the issue for some time and it looks like a major progress,  
Chapeau à lui

{{LabelAndValue}} & {{FacetResult}} use {{instanceof}} checks in their 
{{equals}} method - is that a must?

{{FacetResult}} has a member called {{childCount}} - I think it's the number of 
categories/path/labels that were encountered. The current jdocs "How many 
labels were populated under the requested path" reveals implementation 
(population). Perhaps exchange populated with encountered?

{{FloatRange}} and {{DoubleRange}} uses {{Math.nextUp/Down}} for infinity as 
the ranges are always inclusive. Perhaps these constants for float and double 
could be static final. 

{{TaxonomyFacetSumFloatAssociations}} and {{TaxonomyFacetSumValueSource}} reuse 
a LOT of code, can they extend one another? perhaps extract a common super for 
both?

In {{TaxonomyFacets}} the parents array is saves, I could not see where it's 
being used (and I think it's not used even in the older taxonomy-facet 
implementation). 

{{FacetConfig}} confuses me a bit, as it's very much aware of the Taxonomy, on 
another it handles all the kinds of the facets.
Perhaps {{FacetConfig.build()}} could be split up, allowing each 
{{FacetField.Type}} a build() method of its own, rather than every types' 
building being done in the same method. It will also bring a common parent 
class to all FacetField types, which I also like. As such, the taxonomy part, 
with {{processFacetFields()}} could be moved to its respective Facet 
implementation.
  

> Simplify the facet module APIs
> ------------------------------
>
>                 Key: LUCENE-5339
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5339
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: modules/facet
>            Reporter: Michael McCandless
>            Assignee: Michael McCandless
>         Attachments: LUCENE-5339.patch, LUCENE-5339.patch
>
>
> I'd like to explore simplifications to the facet module's APIs: I
> think the current APIs are complex, and the addition of a new feature
> (sparse faceting, LUCENE-5333) threatens to add even more classes
> (e.g., FacetRequestBuilder).  I think we can do better.
> So, I've been prototyping some drastic changes; this is very
> early/exploratory and I'm not sure where it'll wind up but I think the
> new approach shows promise.
> The big changes are:
>   * Instead of *FacetRequest/Params/Result, you directly instantiate
>     the classes that do facet counting (currently TaxonomyFacetCounts,
>     RangeFacetCounts or SortedSetDVFacetCounts), passing in the
>     SimpleFacetsCollector, and then you interact with those classes to
>     pull labels + values (topN under a path, sparse, specific labels).
>   * At index time, no more FacetIndexingParams/CategoryListParams;
>     instead, you make a new SimpleFacetFields and pass it the field it
>     should store facets + drill downs under.  If you want more than
>     one CLI you create more than one instance of SimpleFacetFields.
>   * I added a simple schema, where you state which dimensions are
>     hierarchical or multi-valued.  From this we decide how to index
>     the ordinals (no more OrdinalPolicy).
> Sparse faceting is just another method (getAllDims), on both taxonomy
> & ssdv facet classes.
> I haven't created a common base class / interface for all of the
> search-time facet classes, but I think this may be possible/clean, and
> perhaps useful for drill sideways.
> All the new classes are under oal.facet.simple.*.
> Lots of things that don't work yet: drill sideways, complements,
> associations, sampling, partitions, etc.  This is just a start ...



--
This message was sent by Atlassian JIRA
(v6.1#6144)

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

Reply via email to