I've made a RequestHandler class that acts as follows: 1. At its initialization, it creates a StandardRequestHandler and hangs onto it. 2. When a query comes to it (I configure it to a custom qt value), it: a. creates a new query based on the query that arrived b. creates a LocalSolrQueryRequest for the current core and a param set containing the derived query c. runs this request through the SearchHandler d. uses a searcher to retrieve all the docs e. rescores/reorders them using our code f. attaches the result of this process to the response. The rescoring code creates a DocSlice containing the usual items, and that becomes "response".
By and large, this works, but I've a few points of mystification at hand, and I'd be most grateful for some illumination. 1. Is there any reason to pass FL to the inner query? StandardRequestHandler.handleRequest never seems to fill fields, since that's a response-write job anyway. 2. My 'rescoring' operates on the assumption that the entire relevancy is determined by the output of our code. If we wanted to combine our ranking (which produces similarity numbers between 0 and 1) with ordinary scores, any advice on scaling? (We'd want to subtract out the contribution of the initial search on our funny fields, and then combine in our rescoring value instead). 3. In 3.5.0, the admin gui never shows me scores other than 0 when I fire this up. SolrJ works just fine, scores come back, but with the admin gui, if I put my special QT in the query type and include score in the field list, the value displayed is always 0. I'd be grateful for any clue as to what I might have gummed up.