Dear Shawn,

Thank you for the detailed explanation!
Many users would need such guidelines about memory consumption (and
performance trade-offs) for facets.

Thanks,
Tomoko

2015-04-03 22:26 GMT+09:00 Shawn Heisey <apa...@elyograg.org>:

> On 4/3/2015 6:53 AM, Tomoko Uchida wrote:
> > According to line 430 in SImpleFacet.java (Solr 5.0.0), facet method is
> > forced to "fc" when we set docValues=true.
> >
> https://github.com/apache/lucene-solr/blob/lucene_solr_5_0_0/solr/core/src/java/org/apache/solr/request/SimpleFacets.java#L430
> >
> > So we need not set facet.method to use doc values. Even if we specify
> > facet.method=enum, it might be ignored.
> > If my understanding is wrong, please correct that.
>
> That code certainly looks like facet.method=enum is ignored when
> docValues are present.
>
> As I understand it, the only disadvantage to facet.method=fc (when
> docValues are not present) is that it uses a lot of heap memory in the
> FieldCache (or whatever replaces FieldCache in 5.0).  That memory
> structure makes subsequent facets much faster, but on a large index, the
> memory required can be astronomical.  The enum method skips that
> caching, relying on the operating system to cache the data in the index
> itself.  If there's enough memory for good OS caching, enum can be
> almost as fast as fc, with a much smaller Java heap.
>
> On a field with docValues, the large memory structure is not required,
> and an optimized code path is used.  Based on the comment in the java
> code that you highlighted, it sounds like only fc will do docValues, but
> no handling is present for the fcs method with docValues, which would
> seem to contradict that comment a little bit.
>
> Thanks,
> Shawn
>
>

Reply via email to