【问题标题】:Apache Solr topTerms (LukeRequestHandler) not giving correct token countApache Solr topTerms (LukeRequestHandler) 没有给出正确的令牌计数
【发布时间】:2011-11-12 13:54:28
【问题描述】:

我正在使用几天前的 Solr 4 主干构建。

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

<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>

这是因为“is”一词在两个文档中总共出现了五次。但是我实际得到的是&lt;int name="is"&gt;2&lt;/int&gt;。我认为这是因为它明显(按文档)总共发生了两次。

但同样,根据 Wiki,我们应该得到一个总计数,将所有文档相加,这正是我真正想要的。


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


参考:

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

【问题讨论】:

    标签: apache solr luke


    【解决方案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>
    

    【讨论】:

    • 太好了,我终于得到了总字数,但它只适用于每个文档。有没有办法获得一个 XML 键下所有文档中所有单词的总数?否则,我当然可以以编程方式组合它们,但我仍然可以想象如果 Solr 可以使用特殊形式的查询来做到这一点,它会更便宜。谢谢。
    • 我怀疑有没有直接的 api。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2017-11-29
    相关资源
    最近更新 更多