按日期查询获取总学期频率

时间:2013-04-02 15:13:44

标签: solr

我想知道查询中的“前10个术语”(这只是一个日期范围查询)。我需要按日期“总学期频率”... 一份文件,只是整个索引中的学期频率计数。我查看了Solr TermsComponent和Lucene的HighFreqTerms,但似乎都不支持我想要的查询结果。

我的索引很简单......每个项目都进入'content'字段,该字段也有'dateCreated'字段(以支持查询)。对我可以使用的技术的任何想法?

2 个答案:

答案 0 :(得分:0)

当您查询相关日期时,您可以遍历已返回的scoreDoc和内容字段的get TermVector,如:

Terms terms = myIndexReader.getTermVector(currentScoreDoc.doc, "content");

然后您可以遍历terms.iterator(),并为每个字词创建一系列计数(从TermsEnum.next()TermsEnum.term()方法获取)

答案 1 :(得分:0)

Faceting几乎提供了您正在寻找的内容,但会为每个字词提供文档频率,而不是总字词频率。将您的日期范围查询作为/select调用,然后添加参数: * rows=0,因为您不希望看到找到的文件,只需计算 * facet=true * facet.field=<the field with the required terms> * facet.limit=10,因为你想要前十名

在名为text的字段中,部分响应如下:

<lst name="facet_counts">
  <lst name="facet_queries"/>
  <lst name="facet_fields">
    <lst name="text">
      <int name="from">3690</int>
      <int name="have">3595</int>
      <int name="it">3495</int>
      <int name="has">3450</int>
      <int name="one">3375</int>
      <int name="who">3221</int>
      <int name="he">3137</int>
      <int name="up">3125</int>
      <int name="all">3112</int>
      <int name="year">3089</int>
    </lst>
  </lst>
  <lst name="facet_dates"/>
  <lst name="facet_ranges"/>
</lst>

警告,此请求可能很慢!