Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-9945

Extend DrillSideways to support exposing FacetCollectors directly

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 9.0
    • 9.0, 8.10
    • modules/facet
    • None
    • New

    Description

      The DrillSideways logic currently encapsulates, 1) the creation of multiple FacetsCollector instances, and 2) the processing of those FacetsCollectors into a single Facets instance. While I suspect this works well for most common cases, and is simple to understand, it's difficult to extend to more advanced cases.

      I propose extending DrillSideways to support exposing the underlying FacetsCollector instances if the user needs them, in addition to maintaining the current functionality for all of the more common cases. Specifically, I'd like to add both the "drill down" FacetsCollector and map of dim -> FacetsCollector for "drill sideways" to the DrillSidewaysResult and ConcurrentDrillSidewaysResult classes. While it's true that a user can extend DrillSideways and override buildFacetsResult to keep track of these, it seems reasonable to provide this in DrillSideways itself so users don't need to sub-class for only this purpose.

      Here are two use-cases illustrating the desire for this:

      1. For certain cases, instead of actually creating a Facets instance from the FacetsCollector, I'd like to intersect the FacetsCollector matching docs with a TermEnum to do determine whether-or-not at least one match exists. This is useful for a "facet" that can only take on the values "true"/"false", and I want to make sure at least one hit has the value "true".
      2. In another case, I only care about some aggregate statistics for a given facet field. For example, I want to find the min and max values. For this, I want to intersect some doc value field with a FacetsCollector and only track the min/max values I observe while iterating.

      Attachments

        Activity

          People

            Unassigned Unassigned
            gsmiller Greg Miller
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 3h
                3h