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