0

数日前のSolr4トランクビルドを使用しています。

LukeRequestHandlerのWikiページ(最初の出力例)によると、各フィールドまたは指定されたフィールドのトークンの数を取得することになっています。これを使用して、すべてのドキュメントの各単語が表示される回数をカウントしたいと思います。たとえば、単語「is」が2つのMS Wordドキュメントに表示されている場合(最初のドキュメントに2回、2番目のドキュメントに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」という単語が2つのドキュメントで合計5回出現するためです。しかし、私が実際に得るのは<int name="is">2</int>です。これは、(文書によって)合計2回明確に発生するためだと思います。

しかし、繰り返しになりますが、Wikiによると、すべてのドキュメントを合計した合計数を取得することになっています。これが私が実際に望んでいることです。


インデックスに登録されたすべてのドキュメントのすべての単語が表示される合計回数を取得するにはどうすればよいですか?


参照:

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

4

1 に答える 1

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>
于 2011-11-12T17:22:46.293 に答える