【问题标题】:Solr AnalyticsQuery API returns analytics by documents that don't match querySolr AnalyticsQuery API 按与查询不匹配的文档返回分析
【发布时间】:2015-01-02 14:00:05
【问题描述】:

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

我在 Solr 中有名为“文档”的核心。有一些字段,例如“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下载它

【问题讨论】:

    标签: solr


    【解决方案1】:

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

    【讨论】:

    • @MayankJain 不,它不应该——如果它是一个有效的答案,它应该作为一个答案发布。您会看到很多人将简单的答案发布为 cmets,如果他们不确定这实际上是问题所在,或者他们只是在正确的方向上给出提示而不是实际给出完整的答案,但没有错在适当的时候单行回答,并且当没有任何额外的解释可以添加时。
    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2017-06-17
    相关资源
    最近更新 更多