[groonga-dev,00574] Re: tfやidfの算出

Back to archive index

Kouhei Sutou kou****@clear*****
2011年 10月 19日 (水) 09:44:43 JST


須藤です。

In <CAE40qUiwTiqS_8scBN6rFfPOcVjQvmjY5kJ5A4gAz8gT=a6jjQ****@mail*****>
  "[groonga-dev,00573] tfやidfの算出" on Fri, 14 Oct 2011 22:49:28 +0900,
  Tomoki MAEDA <tmaed****@ruby-*****> wrote:

> 先日札幌での昼下がりイベントに参加して
> 今日初めて本格的にgroongaに触り始めました。

おぉ!

> 例えば、
> http://groonga.org/ja/docs/tutorial/micro_blog.html
> のマイクロブログ検索とか
> http://groonga.rubyforge.org/rroonga/en/file.tutorial.html
> のブックマーク検索のような例において、
> * ある単語が出現するドキュメント一覧とか数
> * あるドキュメントに出現するトークン一覧と出現回数
> といったようなものを求めるにはどうしたら良いでしょう?

「ある単語が出現するドキュメント一覧とか数」はselectコマンド
でできます。ドキュメント一覧と数の両方が欲しい時は

  > select --table Comments --query comment:@なう --limit -1

として、数だけでよい場合は

  > select --table Comments --query comment:@なう --limit 0

としてください。

「あるドキュメントに出現するトークン一覧と出現回数」は今はで
きないのです。内部的にはそういう情報を持っているのですが、外
には公開していないという状況です。外に公開することを検討して
みますね。

> groongaコマンドで
>   select --table bigram
> などするとわかるのかと思ったのですが、これで得られる
> comment_index
> とか
> users_index
> の値が何を表す数字なのかわかりませんでした。
> (ドキュメントidかと思ったのですが、ドキュメントid=1
> しかレコードが存在しないのに、3とかが返って来たりするので
> よくわかりませんでした)

実は、これは、ある単語がどのくらいの文書にふくまれて*いそう
か*というのを示す概算値になっています。

> rroongaだと何か取れて来るのかと思い
> users_index = Groonga["bigram.users_index"]
> users_index.search("foo").each do |record|
>   pp record
> end
> とかしてみましたが、よくわからないHashが
> 取れて来たり...

searchで返ってくるのは検索結果が入っているGroonga::Hashです。
このハッシュテーブルのキーにヒットしたレコードIDが入っている
(札幌でここまで説明したかったんですが、できませんでした。。。)
ので、以下のようにしてアクセスするとヒットしたレコードを取得
できます。

  users_index.search("foo").each do |record|
    pp record.key
  end

> http://www.clear-code.com/blog/2011/10/5.html
> ここの説明にある lexicon とか index columnのvalue
> などにアクセスできると良いのですが、
> もしかして、そんなプリミティブなことをしなくても
> うまいこと検索条件を組み立てるだけで
> 欲しい情報が得られたりするのでしょうか。

上述の通り、今はできないのですが、これらを取得するのはプリミ
ティブな感じにする方がいいかなぁと思っています。




groonga-dev メーリングリストの案内
Back to archive index