Apache Solr topTerms(LukeRequestHandler)没有给出正确的令牌计数

时间:2011-11-12 13:54:29

标签: apache solr luke

我正在使用Solr 4主干版本,已有几天了。

根据LukeRequestHandler的Wiki页面(第一个示例输出),我们应该得到每个或任何指定字段的标记计数。我想用它来计算我所有文档中每个单词出现的次数。例如,如果单词'is'出现在两个MS Word文档中,第一个出现两次,第二个出现三次,我会得到这样的输出:

<lst name="text">
  <str name="type">text</str>
  <str name="schema">IT-M---------</str>
  <str name="index">(unstored field)</str>
  <int name="docs">2</int>
  <int name="distinct">42</int>
  <lst name="topTerms">
    <int name="is">5</int>

这是因为在两个文件中,“是”这个词总共发生了五次。但实际上我得到的是<int name="is">2</int>。我认为这是因为它总共发生明显(按文档)两次。

但是,根据Wiki,我们应该得到一个总计数,总结所有文件,这是我真正想要的。


如何获得所有索引文档中每个单词出现的总次数?


参考:

http://wiki.apache.org/solr/LukeRequestHandler

1 个答案:

答案 0 :(得分:1)

TermsComponent返回的文档频率是与该字词匹配的唯一文档数,包括已标记为删除但尚未从索引中删除的任何文档。

TermVectorComponent提供有关在字段上设置termVector属性时存储的文档的信息 TVC可以返回术语向量,术语频率,逆文档频率以及位置和偏移信息。

tv.tf - 返回文档中每个术语的文档术语频率信息。

<lst name="termVectors">
  <lst name="doc-5">
    <str name="uniqueKey">MA147LL/A</str>
    <lst name="includes">
      <lst name="cable">
        <int name="tf">1</int>
      </lst>
      <lst name="earbud">
        <int name="tf">5</int>
      </lst>
      <lst name="headphones">
        <int name="tf">1</int>
      </lst>
      <lst name="usb">
        <int name="tf">1</int>
      </lst>
    </lst>
  </lst>
  ...............
</lst>