OK, great! Thanks Marc. I plan on merging the PR today. Cheers, -Greg
On Thu, Dec 29, 2022 at 3:23 PM Marc D'Mello <marcd2...@gmail.com> wrote: > Hi Greg, > > I'm also OK merging as is since this is a new feature and doesn't affect > any of the current functionality. I also think there are no glaring issues > with the API in its current state. However, I do think that merging the > range and rangeonrange functionality makes sense and I like Adrien's > suggestion of providing factory methods. I think if we merge in its current > state we should create a new issue to refactor the range and > rangeonrange faceting package into one and follow the RangeFieldQuery model > more closely. > > On Thu, Dec 29, 2022 at 2:58 PM Greg Miller <gsmil...@gmail.com> wrote: > >> Hey Marc- >> >> I don't want to speak for Adrien as he might have something different in >> mind, but I think that's more-or-less the idea. I'm not sure the factory >> methods belong on the LongRange/DoubleRange classes, or if separate classes >> should be created for this purpose (which is more how I thought of it)? >> >> To do this cleanly though, I'd really like us to try to consolidate all >> the "range related" faceting functionality into one java package and >> consolidate the API a bit. As part of this, I think we can be a little >> smarter about not duplicating the "range" classes themselves. >> >> All this said, given that I think your "range on range" faceting PR is >> ready to be merged as it currently exists, and has been through a number of >> iteration already, I'm OK if we want to merge that work as it stands and >> follow up with revisiting the API/naming/etc. as a future project. What do >> you think? >> >> Cheers, >> -Greg >> >> On Tue, Dec 13, 2022 at 7:23 PM Marc D'Mello <marcd2...@gmail.com> wrote: >> >>> Hi, >>> >>> I'm a bit unsure about what is being suggested. Is the idea to rename >>> range#LongRange and rangeonrange#LongRange to LongFieldFacets and >>> LongRangeFacets respectively and stick the static getters in there? In that >>> case, I also think that the idea makes a lot of sense and that it would >>> match our current range query API much better. >>> >>> In addition, looking at document#LongRange, there are queries like >>> newContainsQuery() and newWithinQuery() that we can probably mimic to >>> avoid exposing RangeFieldQuery.QueryType to the user. >>> >>> On Tue, Dec 13, 2022 at 5:04 PM Greg Miller <gsmil...@gmail.com> wrote: >>> >>>> Thanks for the suggestion Adrien. I like this idea! Marc- what do you >>>> think? >>>> >>>> We might need to rework the package structure under the facets module >>>> to make this clean, but that might not be a terrible thing anyway. The >>>> existing sub-packages will make it challenging to get the visibility right. >>>> I think it would be ideal to flatten the package so we can reduce >>>> visibility of the class definitions and only expose the factory methods. >>>> >>>> Cheers, >>>> -Greg >>>> >>>> On Tue, Dec 13, 2022 at 01:18 Adrien Grand <jpou...@gmail.com> wrote: >>>> >>>>> I wonder if the facets actually require a different name, since they >>>>> look to me like a generalization of range facets for range fields, >>>>> while we previously only supported range facets on numeric fields. We >>>>> could keep calling them range facets? >>>>> >>>>> Maybe we could use the same model we used for queries by not exposing >>>>> query classes to users and providing factory methods, e.g. we could >>>>> have something like: >>>>> >>>>> public class LongFieldFacets { >>>>> >>>>> public static Facets getRangeFacetCounts(String field, >>>>> FacetsCollector hits, LongRange... ranges) { >>>>> return new LongRangeFacetCounts(...); >>>>> } >>>>> >>>>> } >>>>> >>>>> public class LongRangeFacets { >>>>> >>>>> // same function name >>>>> public static Facets getRangeFacetCounts(String field, >>>>> FacetsCollector hits, RangeFieldQuery.QueryType queryType, >>>>> LongRange... ranges) { >>>>> return new LongRangeOnRangeFacetCounts(...); >>>>> } >>>>> >>>>> } >>>>> >>>>> We'd still need to give a name for these classes, but the name would >>>>> be less important since these class names would be only for ourselves. >>>>> Users would never see them and refer to this new functionality as >>>>> range facets on range fields? >>>>> >>>>> On Mon, Dec 12, 2022 at 10:11 PM Gus Heck <gus.h...@gmail.com> wrote: >>>>> > >>>>> > In that case, maybe "Range Logic Faceting" ? >>>>> > >>>>> > Relation seems too broad and too overloaded elsewhere, makes me >>>>> think of RDBMS, related-ness, joins and such via word associations. >>>>> > >>>>> > On Mon, Dec 12, 2022 at 3:27 PM Greg Miller <gsmil...@gmail.com> >>>>> wrote: >>>>> >> >>>>> >> Thank for the suggestion! I like the descriptiveness of it. My only >>>>> hesitation is that is supports more than range intersection based on the >>>>> provided QueryType instance (e.g., within, contains). I _imagine_ that >>>>> intersection will be most common, but I don’t really know of course. I >>>>> thought about generalizing your suggestion to something like “Range >>>>> Relation Faceting,” but fear that would be confusing. >>>>> >> >>>>> >> Thanks again! >>>>> >> >>>>> >> Cheers, >>>>> >> -Greg >>>>> >> >>>>> >> On Mon, Dec 12, 2022 at 10:19 Gus Heck <gus.h...@gmail.com> wrote: >>>>> >>> >>>>> >>> Maybe "Range Intersect Faceting"? >>>>> >>> >>>>> >>> On Mon, Dec 12, 2022 at 1:11 PM Greg Miller <gsmil...@gmail.com> >>>>> wrote: >>>>> >>>> >>>>> >>>> Folks- >>>>> >>>> >>>>> >>>> Naming is hard! (But you all know that already). >>>>> >>>> >>>>> >>>> Marc D'Mello and I have been working on a new faceting >>>>> implementation that's meant to complement Lucene's existing range-relation >>>>> queries (e.g., LongRange#newIntersectsQuery, DoubleRange#newContainsQuery, >>>>> LongRangeDocValuesField#newSlowIntersectsQuery, etc.). Well, I should say >>>>> Marc is working on the change and I'm just providing nit-picky feedback on >>>>> his PR, which is here: https://github.com/apache/lucene/pull/11901. >>>>> The general idea of this feature is to allow users to get facet counts for >>>>> these sorts of range-relation filters before they're applied. For example, >>>>> if a user is indexing ranges with their documents, they may have a set of >>>>> query-ranges they want to facet on, based on some range relationship >>>>> (e.g., >>>>> intersection, contains, etc.). >>>>> >>>> >>>>> >>>> As a concrete example, imagine that documents contain a price >>>>> range (maybe a document represents some e-commerce product but the price >>>>> varies based on some configuration options), and a user wants to build a >>>>> price range filter that applies filtering based on whether-or-not the two >>>>> ranges intersect (i.e., DoubleRange#newIntersectsQuery to apply a price >>>>> range filter). This user wants faceting capabilities over the different >>>>> price ranges they want to make available, so they need a way to facet over >>>>> a list of provided query-ranges, based on the "intersect" relationship >>>>> with >>>>> the doc-encoded ranges. That's what Marc's "RangeOnRange" faceting is >>>>> trying to accomplish. >>>>> >>>> >>>>> >>>> In my opinion, the PR is really close to being ready (thanks >>>>> again Marc!), but I'm wondering if we can come up with a more descriptive >>>>> name. As it currently stands, the feature is termed "RangeOnRange >>>>> Faceting," which feels just a bit wonky to me. That said, I can't really >>>>> come up with anything better. >>>>> >>>> >>>>> >>>> ** Does anyone have suggestions on a better name? ** >>>>> >>>> >>>>> >>>> Any / all suggestions appreciated! (And of course, any other >>>>> input on the PR is welcome if anyone is interested). >>>>> >>>> >>>>> >>>> Cheers, >>>>> >>>> -Greg >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>> -- >>>>> >>> http://www.needhamsoftware.com (work) >>>>> >>> http://www.the111shift.com (play) >>>>> > >>>>> > >>>>> > >>>>> > -- >>>>> > http://www.needhamsoftware.com (work) >>>>> > http://www.the111shift.com (play) >>>>> >>>>> >>>>> >>>>> -- >>>>> Adrien >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org >>>>> For additional commands, e-mail: dev-h...@lucene.apache.org >>>>> >>>>>