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
下载它答案 0 :(得分:0)
我猜你需要使用像& fq = {!myanalytic param1 = a param2 = b cost = 101}这样的查询