Hi Joel,

just created [1] a new issue for that.

Many thanks again

Andrea

[1] https://issues.apache.org/jira/browse/SOLR-9095


On 06/05/16 20:21, Joel Bernstein wrote:
Maybe one ticket would work. Something like: "ReRanker should gracefully
handle sorts without score". Then you can describe the two scenarios. It
might be that these problems are tackled outside of the
ReRankQParserPlugin. Possibly the QueryComponent could add some logic that
would tack on the secondary score sort or remove the reRanker.

Joel Bernstein
http://joelsolr.blogspot.com/

On Fri, May 6, 2016 at 1:39 PM, Andrea Gazzarini <gxs...@gmail.com> wrote:

Hi Joel,
many thanks for the response and sorry for this late reply.

About the first question, I can open a JIRA for that. Instead, for
disabling the component I think it would be useful to add

- an automatic behaviour: if the sort criteria excludes the score the
re-ranking could be automatically excluded
- a parameter / flag (something like *rr=true*) which enables / disables
the reranking. In this way such behaviour could be also driven on the
client side

What do you think? I guess this should be another JIRA

Best,
Andrea


On Fri, May 6, 2016 at 3:32 PM, Joel Bernstein <joels...@gmail.com> wrote:

I would consider the NPE when sort by score is not included a bug. There
is
the work around, that you mentioned, which is to have a compound sort
which
includes score.

The second issue though of disabling the ReRanker when someone doesn't
include a sort by score, would be a new feature of the ReRanker. I think
it's a good idea but it's not implemented yet.

I'm not sure if anyone has any ideas about conditionally adding the
ReRanker using configurations?

Joel Bernstein
http://joelsolr.blogspot.com/

On Fri, May 6, 2016 at 4:10 AM, Andrea Gazzarini <gxs...@gmail.com>
wrote:
Hi guys,
I have a Solr 4.10.4 instance with a RequestHandler that has a
re-ranking
query configured like this:

<lst name="defaults">
             <str name="defType">dismax</str>
             ...
             <str name="rqq">{!boost b=someFunction() v=$q}</str>
             <str name="rq">{!rerank reRankQuery=$rqq reRankDocs=60
reRankWeight=1.2}</str>
             <str name="sort">score desc</str>
</lst>

Everything is working until the client sends a sort params that doesn't
include the score field. So if for example the request contains
"sort=price
asc" then a NullPointerException is thrown:
/
//09:46:08,548 ERROR [org.apache.solr.core.SolrCore]
java.lang.NullPointerException//
//[INFO] [talledLocalContainer]     at

org.apache.lucene.search.TopFieldCollector$OneComparatorScoringMaxScoreCollector.collect(TopFieldCollector.java:291)//
//[INFO] [talledLocalContainer]     at

org.apache.solr.search.ReRankQParserPlugin$ReRankCollector.collect(ReRankQParserPlugin.java:263)//
//[INFO] [talledLocalContainer]     at

org.apache.solr.search.SolrIndexSearcher.sortDocSet(SolrIndexSearcher.java:1999)//
//[INFO] [talledLocalContainer]     at

org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1423)//
//[INFO] [talledLocalContainer]     at

org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:514)//
//[INFO] [talledLocalContainer]     at

org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:484)//
//[INFO] [talledLocalContainer]     at

org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:218)//
//[INFO] [talledLocalContainer]     at

org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
/The only way to avoid this exception is to _explicitly_ add th/e
"score
desc" /value to the incoming field (i.e. sort=price asc, score desc).
In
this way I get no exception. I said "explicitly" because adding an
"appends" section in my handler

<lst name="appends">
     <str name="sort">score desc</str>
</lst>

Even I don't know if that could solve my problem, in practice it is
completely ignoring (i.e. I'm still getting the NPE above).
However, when I explicitly add "sort=price asc, score desc", as
consequence of the re-ranking, the top 60 results, although I said to
Solr
"order by price", are still shuffled and that's not what I want.

On top of that I have two questions:

  * Any idea about the exception above?
  * How can I disable the re-ranking query in case the order is not by
    score?

About the second question, I'm thinking to the following solutions, but
I'm not sure if there's a better way to do that.

1. Create another request handler, which is basically a clone of the
handler above but without the re-ranking stuff
2. Use local params for the reRankDocs...

<lst name="defaults">
             <str name="defType">dismax</str>
             ...
             <str name="rqq">{!boost b=someFunction() v=$q}</str>
             <str name="rq">{!rerank reRankQuery=$rqq reRankDocs=*$rrd*
reRankWeight=1.2}</str>
*<str name="rrd">60</str>*
             <str name="sort">score desc</str>
</lst>

...and have (in case of sorting by something different from the score)
the
client sending an additional params "rdd=0". This is working but I
still
need to explicitly declare "sort=price asc, score desc"

Any thoughts?

Best,
Andrea



Reply via email to