我正在寻找(在制作我自己的过程中)为fork2的solr默认群集组件。在clustering component类中,有两种方法可以调用聚类算法:
在重写的流程方法
中SolrDocumentList solrDocList = SolrPluginUtils.docListToSolrDocumentList(
results.docList, rb.req.getSearcher(), engine.getFieldsToLoad(rb.req),docIds);
Object clusters = engine.cluster(rb.getQuery(), solrDocList, docIds, rb.req);
rb.rsp.add("clusters", clusters);
再次使用finishStage方法
Map<SolrDocument,Integer> docIds = null;
Object clusters = engine.cluster(rb.getQuery(), solrDocList, docIds, rb.req);
rb.rsp.add("clusters", clusters);
现在我的问题是,当所有结果都已聚合时,进程方法不是在完整的结果查询上工作,而是在分片和完成阶段os,那么为什么我们将聚类算法调用两次并将其添加到结果状态?我错过了什么吗?
群集组件代码here。
P.S 如果我错了,请纠正我。
答案 0 :(得分:1)
对我来说看起来像个错误(我发现它在分布式模式下实际上被调用了两次)。我将对此进行调查,请参阅SOLR-10678进行跟踪。