Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.7, 6.0
    • Component/s: modules/facet
    • Labels:
      None
    • Lucene Fields:
      New

      Description

      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 ...

        Attachments

        1. LUCENE-5339.patch
          2.00 MB
          Michael McCandless
        2. LUCENE-5339.patch
          123 kB
          Michael McCandless
        3. LUCENE-5339.patch
          90 kB
          Michael McCandless

          Issue Links

            Activity

              People

              • Assignee:
                mikemccand Michael McCandless
                Reporter:
                mikemccand Michael McCandless
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: