Как работает компонент кластера solr?
Я искал (в процессе создания своего) компонент кластеризации по умолчанию для carrot2. В классе компонентов кластеризации есть 2 метода, в которых называются алгоритмы кластеризации:
в переопределенном методе процесса
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);
Теперь мой вопрос заключается в том, что метод процесса работает не с полным запросом результатов, а с осколками и завершающим этапом, когда все результаты агрегированы, тогда почему мы дважды вызываем алгоритмы кластеризации и добавляем его в состояние результата? что-то?
Кластеризация кода компонента здесь.
PS Пожалуйста, поправьте меня, если я ошибаюсь.
1 ответ
Похоже, ошибка для меня (и я вижу, что на самом деле он вызывается дважды в распределенном режиме). Я посмотрю на это, см. SOLR-10678, чтобы отследить это.