我正在使用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,我们应该得到一个总计数,总结所有文件,这是我真正想要的。
如何获得所有索引文档中每个单词出现的总次数?
参考:
答案 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>