Despite docvalues provide NRT faceting with a great performance (since
5.4), enum method is still really important for edge cases (many docs,
small num of terms).
Also, Solr's UnIvertedField had a really smart BigTerms strategy, when
fattest terms were counted by enum and remaining ones with fc. DocValues
needs to evolve much until it's capable to provide such level of
flexibility. I might confuse something again, but I a little bit worry
about existence BigTerms/UnIvertedField in recent versions.

On Wed, Sep 23, 2015 at 12:44 PM, Alessandro Benedetti <
benedetti.ale...@gmail.com> wrote:

> Well done Mikhail,
> curious to see the performance!
>
> Apart the disk usage ( of course building docValues will cost more space),
> taking in consideration the Field cardinality, in the past when the field
> cardinality was low ( few unique values in the field), the enum approach
> was suggested ( so DocValues were non necessary strictly talking about
> faceting).
>
> After this improvement, in your opinion, what is the current status ? after
> the 5.4 release, will enum faceting approach make sense anymore ?
> Has anyone benchmarked this ?
>
> Cheers
>
> 2015-09-23 9:02 GMT+01:00 Mikhail Khludnev <mkhlud...@griddynamics.com>:
>
> > Uwe,
> >
> > I'm sorry for confusion https://issues.apache.org/jira/browse/SOLR-7730
> > goes in 5.4 only. Hence, to get fast DV facets you need to apply patch
> > (it's pretty small).
> > Accelerating non-DV facets is not so clear so far. Please show profiler
> > snapshot for non-DV facets if you wish to go this way.
> >
> >
> > On Tue, Sep 22, 2015 at 5:36 PM, Uwe Reh <r...@hebis.uni-frankfurt.de>
> > wrote:
> >
> > > The exact version as shown by the UI is:
> > > - solr-impl   5.3.0 1696229 - noble - 2015-08-17 17:10:43
> > > - lucene-impl 5.3.0 1696229 - noble - 2015-08-17 16:59:03
> > >
> > > Unfortunately my skills in debugging are limited. So I'm not sure
> about a
> > > 'deeper caller stack'.
> > > Did you mean the attached snapshot from VirtualVM, a stack trace like
> > > below or something else? Please give me a hint.
> > >
> > > uwe
> > >
> > > "qtp1734853116-68" #68 prio=5 os_prio=64 tid=0x00000000117fd800
> nid=0x77
> > >> runnable [0xfffffd7f991fc000]
> > >>    java.lang.Thread.State: RUNNABLE
> > >>         at java.util.HashMap.resize(HashMap.java:734)
> > >>         at java.util.HashMap.putVal(HashMap.java:662)
> > >>         at java.util.HashMap.put(HashMap.java:611)
> > >>         at
> > >>
> >
> org.apache.lucene.index.FieldInfos$Builder.addOrUpdateInternal(FieldInfos.java:344)
> > >>         at
> > >> org.apache.lucene.index.FieldInfos$Builder.add(FieldInfos.java:366)
> > >>         at
> > >> org.apache.lucene.index.FieldInfos$Builder.add(FieldInfos.java:304)
> > >>         at
> > >>
> >
> org.apache.lucene.index.MultiFields.getMergedFieldInfos(MultiFields.java:245)
> > >>         at
> > >>
> >
> org.apache.lucene.index.SlowCompositeReaderWrapper.getFieldInfos(SlowCompositeReaderWrapper.java:237)
> > >>         at
> > >>
> >
> org.apache.lucene.index.SlowCompositeReaderWrapper.getSortedSetDocValues(SlowCompositeReaderWrapper.java:174)
> > >>         at
> > >>
> >
> org.apache.solr.request.DocValuesFacets.getCounts(DocValuesFacets.java:72)
> > >>         at
> > >>
> > org.apache.solr.request.SimpleFacets.getTermCounts(SimpleFacets.java:492)
> > >>         at
> > >>
> > org.apache.solr.request.SimpleFacets.getTermCounts(SimpleFacets.java:385)
> > >>         at
> > >> org.apache.solr.request.SimpleFacets$3.call(SimpleFacets.java:628)
> > >>         at
> > >> org.apache.solr.request.SimpleFacets$3.call(SimpleFacets.java:619)
> > >>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> > >>         at
> > >> org.apache.solr.request.SimpleFacets$2.execute(SimpleFacets.java:573)
> > >>         at
> > >>
> >
> org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:644)
> > >>         at
> > >>
> >
> org.apache.solr.handler.component.FacetComponent.getFacetCounts(FacetComponent.java:294)
> > >>         at
> > >>
> >
> org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:256)
> > >>         at
> > >>
> >
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:285)
> > >>         at
> > >>
> >
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
> > >>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:2068)
> > >>         at
> > >> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:669)
> > >>         at
> > >> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:462)
> > >>         at
> > >>
> >
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:210)
> > >>         at
> > >>
> >
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:179)
> > >>         at
> > >>
> >
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
> > >>         at
> > >>
> >
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
> > >>         at
> > >>
> >
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
> > >>         at
> > >>
> > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
> > >>         at org.eclipse.jetty.server.Server.handle(Server.java:499)
> > >>         at
> > >> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
> > >>         at
> > >>
> >
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
> > >>         at org.eclipse.jetty.io
> > >> .AbstractConnection$2.run(AbstractConnection.java:540)
> > >>         at
> > >>
> >
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
> > >>         at
> > >>
> >
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
> > >>         at java.lang.Thread.run(Thread.java:745)
> > >>
> > >
> > >
> > >
> > > Am 22.09.2015 um 12:56 schrieb Mikhail Khludnev:
> > >
> > >> It's quite strange
> > >> https://issues.apache.org/jira/browse/SOLR-7730 significantly
> optimized
> > >> DV
> > >> facets at 5.3.0 exactly by avoiding FileInfo merge.
> > >> Would you mind to provide deeper caller stack for
> > >>
> org.apache.lucene.index.FileInfos.MultibleFields.getMergedFieldInfos()?
> > >> Or a time spend in SlowCompositeReaderWrapper, DocValuesFacets,
> > >> MultiDocValues and their hot methods.
> > >> Which version you exactly on? and how do you know that?
> > >> Thanks
> > >>
> > >>
> > >
> >
> >
> > --
> > Sincerely yours
> > Mikhail Khludnev
> > Principal Engineer,
> > Grid Dynamics
> >
> > <http://www.griddynamics.com>
> > <mkhlud...@griddynamics.com>
> >
>
>
>
> --
> --------------------------
>
> Benedetti Alessandro
> Visiting card - http://about.me/alessandro_benedetti
> Blog - http://alexbenedetti.blogspot.co.uk
>
> "Tyger, tyger burning bright
> In the forests of the night,
> What immortal hand or eye
> Could frame thy fearful symmetry?"
>
> William Blake - Songs of Experience -1794 England
>



-- 
Sincerely yours
Mikhail Khludnev
Principal Engineer,
Grid Dynamics

<http://www.griddynamics.com>
<mkhlud...@griddynamics.com>

Reply via email to