[
https://issues.apache.org/jira/browse/SOLR-5725?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mikhail Khludnev updated SOLR-5725:
-----------------------------------
Attachment: SOLR-5725.patch
bq. What's with the rb.req.getParams() at the top of
modifyRequestForFieldFacets?
ops.. I'm sorry. I started type there, but then all magic went to
{{.FacetComponent.EnumProbingDistribFacetField}}. Fixed in attached patch.
bq. for the loop label in SimpleFacets.getFacetTermEnumCounts, can you please
use all-caps
Sure. Fixed in patch.
bq. In TestRandomFaceting.getExpectationForSortByCount: why are offset & limit
multiplied by 2?
facets in json response come as a flat list like \["a", 1, "c", 1, "e", 4],
thus every tuple takes a pair of elems in array.
Ok. Let's confirm the spec:
{panel}
{{facet.exists=true}} is valid only for {{facet.method=enum}}, i.e. it throws
exceptions on other methods. It caps facet counts by 1, hopefully does it
faster than usual {{enum}}.
{panel}
Does it work for everyone?
> Efficient facets without counts for enum method
> -----------------------------------------------
>
> Key: SOLR-5725
> URL: https://issues.apache.org/jira/browse/SOLR-5725
> Project: Solr
> Issue Type: Improvement
> Components: search
> Reporter: Alexey Kozhemiakin
> Assignee: Mikhail Khludnev
> Fix For: master (7.0), 6.3
>
> Attachments: SOLR-5725-5x.patch, SOLR-5725-master.patch,
> SOLR-5725.patch, SOLR-5725.patch, SOLR-5725.patch, SOLR-5725.patch,
> SOLR-5725.patch
>
>
> Shot version:
> This improves performance for facet.method=enum when it's enough to know that
> facet count>0, for example when you it's when you dynamically populate
> filters on search form. New method checks if two bitsets intersect instead of
> counting intersection size.
> Long version:
> We have a dataset containing hundreds of millions of records, we facet by
> dozens of fields with many of facet-excludes and have relatively small number
> of unique values in fields, around thousands.
> Before executing search, users work with "advanced search" form, our goal is
> to populate dozens of filters with values which are applicable with other
> selected values, so basically this is a use case for facets with mincount=1,
> but without need in actual counts.
> Our performance tests showed that facet.method=enum works much better than
> fc\fcs, probably due to a specific ratio of "docset"\"unique terms count".
> For example average execution of query time with method fc=1500ms, fcs=2600ms
> and with enum=280ms. Profiling indicated the majority time for enum was spent
> on intersecting docsets.
> Hers's a patch that introduces an extension to facet calculation for
> method=enum. Basically it uses docSetA.intersects(docSetB) instead of
> docSetA. intersectionSize (docSetB).
> As a result we were able to reduce our average query time from 280ms to 60ms.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]