Solr AnalyticsQuery API按与查询不匹配的文档返回分析

时间:2014-11-27 06:49:02

标签: solr

Solr AnalyticsQuery API通过与查询不匹配的文档返回分析。

我在Solr中有一个名为'documents'的核心。有一些字段,如'id','url','text','domain'。 我还有ResourceAnalyticsCollector,它可以计算每个资源所属的文档数量。 资源分析结果示例如下:

  

资源:{

     
      
  • example.com:456
  •   
  • example2.com:123
  •   
  • ...
  •   
     

}

我第一次发现问题时,查询是由一个域进行的,但分析返回的结果只有很少的域。

示例:

Solr查询:domain:example.com

此查询返回的文档数:1000(所有这些文档属于 example.com

分析结果:

  

资源:{

     
      
  • example.com:700
  •   
  • example2.com:100
  •   
  • example3.com:100
  •   
  • example4.com:100
  •   
     

}

我通过/select搜索处理程序查找了所有文档,所有这些文档都属于example.com域。

但是当我查看分析文档时,我发现有很多文档与查询不匹配。但是文件数量是一样的。

以下是我的分析模块:

public class ResourceAnalyticsCollector extends DelegatingCollector{

    public ResourceAnalyticsCollector(ResponseBuilder rb, IndexSearcher searcher) {
        this.rb = rb;
        this.searcher = searcher;
    }

    @Override
    public void collect(int docNum){
        Document doc;
        doc = searcher.doc(docNum);

             //Output document id for logs
        String docId = doc.get(AnalyticsConstants.ID_SOLR_FIELD);
        System.out.println("Doc id = " + docId);

        documentList.add(doc);
        delegate.collect(docNum);
    }

    @Override
    public void finish(){
        rb.rsp.add(TOTAL_RESULT_FIELD, this.getAnalyticsContext(documentList));
    }

我认为这是Solr的错误。但如果有人可以帮我解决这个问题,那就太好了!

我创建了我的分析的迷你版本,带有核心。文件名“Analytics_API_problem.rar”。 您可以通过这些link

下载它

1 个答案:

答案 0 :(得分:0)

我猜你需要使用像& fq = {!myanalytic param1 = a param2 = b cost = 101}这样的查询