I have a custom Lucene module that when given a string, returns a
Lucene query.
It's quite like the MoreLikeThis query and performs a similar task
(returns the closest doc ids to the string), but you can only query
by string, not by doc id or anything. (I can't use MLT for reasons I
don't want to clutter up this post with)
I'd like to put this in Solr. I was initially following the example
of the MLT patch (SOLR-61) but the MLT patch appears to work on a
list of results to generate more results. (e.g. you have to query
id:xxx first, and it adds to those results the ones like id:xxx.)
I would rather this handler get installed as a "rewriter" e.g., Solr
gets a query like
contents:kittens AND specialfield_X:"special query"
and it sees the specialfield_ prefix, passes it to the Lucene query
rewriter module, which replaces it with something like (id:e1^0.9 OR
id:e2^0.5)
And then Solr just does it usual thing with the result:
contents:kittens AND (id:e1^0.9 OR id:e2^0.5)
Where should I put this in my hacked up fork of Solr? The one
requirement is that my Lucene rewriter needs to be instantiated with
an IndexReader object, just like the MLT query object. So it has to
be somewhere in Solr that knows about the IndexReader /
SolrQueryRequest / SolrIndexSearcher but hasn't done any query
parsing or searching yet.
-Brian