After some more digging I've learned that the Query gets called more than once on the same shard, but with a different shard purpose. I don't understand the flow, but I assume that one call is triggering the transform() via a path that does not pass through the document collector. I also don't know why this flow changes just because of sharding. But perhaps the first pass through the docs are collected and sorted and the merge happens (PURPOSE_GET_TOP_IDS), and then the requested field data is gathered (PURPOSE_GET_FIELDS). It's this second pass that barfs in the transform() method because my custom analytics data doesn't exist. I would expect an NPE instead of a read error, nonetheless if I wrap the mycustomdata.get() with a null check the search works as expected.
-- View this message in context: http://lucene.472066.n3.nabble.com/Can-a-MergeStrategy-filter-returned-docs-tp4290446p4290998.html Sent from the Solr - User mailing list archive at Nabble.com.