There it is: https://issues.apache.org/jira/browse/SOLR-14662. I'd love to dig deeper into that and provide a patch for it, but I'm fully occupied with our own project.
Thanks and best regards, Marc -----Ursprüngliche Nachricht----- Von: Erick Erickson <erickerick...@gmail.com> Gesendet: Donnerstag, 16. Juli 2020 15:06 An: solr-user@lucene.apache.org Betreff: Re: Elevation with distributed search causes NPE Can you raise a JIRA? If you’re ambitious, you can add a patch too ;) > On Jul 16, 2020, at 2:52 AM, Marc Linden <marc.lin...@virtual-identity.com> > wrote: > > Thanks Erick for your fast response. > > I've checked out adding the sort param and yes that vanished the problem but > it also disables elevation if I'm not mistaken. So after adding > forceElevation=true to the query then a ClassCastException was thrown: > > http://localhost:9983/solr/core1/select?q=elevatedTerm&lowercaseOperat > ors=false&df=text_en&defType=edismax&fq=lang:en&shards=localhost:9983/ > solr/core1,localhost:9983/solr/core2&fl=[elevated],[shard],area,id&row > s=10&start=0&sort=area%20asc&forceElevation=true > > java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.String at > org.apache.solr.schema.FieldType.unmarshalStringSortValue(FieldType.ja > va:1229) at > org.apache.solr.schema.StrField.unmarshalSortValue(StrField.java:122) > at > org.apache.solr.handler.component.QueryComponent.unmarshalSortValues(Q > ueryComponent.java:1092) at > org.apache.solr.handler.component.QueryComponent.mergeIds(QueryCompone > nt.java:917) at > org.apache.solr.handler.component.QueryComponent.handleRegularResponse > s(QueryComponent.java:613) at > org.apache.solr.handler.component.QueryComponent.handleResponses(Query > Component.java:592) at > org.apache.solr.handler.component.SearchHandler.handleRequestBody(Sear > chHandler.java:431) at > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandle > rBase.java:199) at > org.apache.solr.core.SolrCore.execute(SolrCore.java:2578) > at > org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:780) > ... > > Best regards, > Marc > > -----Ursprüngliche Nachricht----- > Von: Erick Erickson <erickerick...@gmail.com> > Gesendet: Mittwoch, 15. Juli 2020 14:32 > An: solr-user@lucene.apache.org > Betreff: Re: Elevation with distributed search causes NPE > > Hmmm, looking at the code that line looks like this: > > sortSpec.getSort().getSort(); > > I’m curious what happens if you specify a sort on the query? If that makes > the problem go away, it’s a smoking gun. > > Whether or not adding sorting makes the problem go away, this looks like > something that’s a legitimate JIRA, please go ahead and raise one. > > Best, > Erick > >> On Jul 15, 2020, at 4:34 AM, Marc Linden <marc.lin...@virtual-identity.com> >> wrote: >> >> Hi all, >> >> I'm facing the problem that Solr is throwing a NullPointerException when >> performing a distributed search with multiple shards having elevation >> configured where one or more shards do have elevated results but others do >> not. >> >> We are using Solr 8.2 and have the QueryElevationComponent configured with >> "last-components" of the default search handler "/select". But the problem >> also occurs when using the explicit "/elevate" search handler. >> <requestHandler name="/select" class="solr.SearchHandler"> ... >> <arr name="last-components"> >> <str>elevator</str> >> </arr> >> </requestHandler> >> ... >> <searchComponent name="elevator" class="solr.QueryElevationComponent" >>> >> <!-- pick a fieldType to analyze queries --> <str >> name="queryFieldType">string</str> >> <str name="config-file">elevate.xml</str> >> </searchComponent> >> >> ### Steps to reproduce: >> >> (1) Add entries to the elevate.xml of each core to elevate a specific >> document for the text "searchTerm": >> >> core1: >> <elevate> >> ... >> <query text="searchTerm"><doc id="core1docId1" /></query> </elevate> >> core2: >> <elevate> >> ... >> <query text="searchTerm"><doc id="core2docId1" /></query> </elevate> >> >> (2) Execute query (we use port 9983): >> http://localhost:9983/solr/web/select?q=elevatedTerm&lowercaseOperato >> r >> s=false&df=text_en&defType=edismax&fq=lang:en&shards=localhost:9983/s >> o >> lr/core1,localhost:9983/solr/core2&fl=[elevated],[shard],area,id&rows >> = >> 10&start=0 >> >> Now as both shards have elevated documents for the requested "searchTerm" >> the search results are as expected: >> >> response: { >> numFound: 5192, >> start: 0, >> maxScore: 1.9032197, >> docs: [{ >> area: "press", >> id: "core1docId1", >> [elevated]: true, >> [shard]: "localhost:9983/solr/core1" >> }, { >> area: "products", >> id: "core2docId1", >> [elevated]: true, >> [shard]: "localhost:9983/solr/core2" >> }, { >> area: "press", >> id: "core1docId2", >> [elevated]: false, >> [shard]: "localhost:9983/solr/core1" >> }, >> ... >> >> (3) Remove the elevation entry for that "searchTerm" from one of the >> cores, e.g. via comment >> >> core2: >> <elevate> >> ... >> <!-- >> <query text="searchTerm"><doc id="core2docId1" /></query> >> --> >> </elevate> >> >> >> (4) Reload the modified core: >> http://localhost:9983/solr/admin/cores?action=RELOAD&core=core2 >> >> (5) Request same query again and you get the NPE: >> >> error: { >> trace: "java.lang.NullPointerException >> at >> org.apache.solr.handler.component.QueryComponent.unmarshalSortValues(QueryComponent.java:1068) >> at >> org.apache.solr.handler.component.QueryComponent.mergeIds(QueryComponent.java:917) >> at >> org.apache.solr.handler.component.QueryComponent.handleRegularResponses(QueryComponent.java:613) >> at >> org.apache.solr.handler.component.QueryComponent.handleResponses(QueryComponent.java:592) >> at >> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:431) >> at >> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199) >> at org.apache.solr.core.SolrCore.execute(SolrCore.java:2578) >> at >> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:780) >> at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:566) >> at >> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:423) >> at >> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:350) >> at >> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602) >> at >> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java >> :540) >> ... >> >> >> I want to ask the community if I'm missing something or if this really is a >> bug. >> >> Thanks in advance, >> Marc >> Marc Linden >> Developer >> >> Virtual Identity AG >> Grünwälderstraße 10-14 >> 79098 Freiburg >> >> +49 761 20758-422 >> -- >> >> marc.lin...@virtual-identity.com >> http://www.virtual-identity.com >> >> Freiburg | München | Wien | Porto >> >> ________________________________ >> >> Virtual Identity AG >> Grünwälderstraße 10-14 >> 79098 Freiburg >> Amtsgericht Freiburg, HRB 6218 >> Vorstand: Ralf Heller >> Vorsitzende des Aufsichtsrates: Kirsten Heller >> Umsatzsteuer-ID: DE208002218 > > Marc Linden > Developer > > Virtual Identity AG > Grünwälderstraße 10-14 > 79098 Freiburg > > +49 761 20758-422 > -- > > marc.lin...@virtual-identity.com > http://www.virtual-identity.com > > Freiburg | München | Wien | Porto > > ________________________________ > > Virtual Identity AG > Grünwälderstraße 10-14 > 79098 Freiburg > Amtsgericht Freiburg, HRB 6218 > Vorstand: Ralf Heller > Vorsitzende des Aufsichtsrates: Kirsten Heller > Umsatzsteuer-ID: DE208002218 Marc Linden Developer Virtual Identity AG Grünwälderstraße 10-14 79098 Freiburg +49 761 20758-422 -- marc.lin...@virtual-identity.com http://www.virtual-identity.com Freiburg | München | Wien | Porto ________________________________ Virtual Identity AG Grünwälderstraße 10-14 79098 Freiburg Amtsgericht Freiburg, HRB 6218 Vorstand: Ralf Heller Vorsitzende des Aufsichtsrates: Kirsten Heller Umsatzsteuer-ID: DE208002218