Как работает компонент кластера 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, чтобы отследить это.

Другие вопросы по тегам