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 > などにアクセスできると良いのですが、 > もしかして、そんなプリミティブなことをしなくても > うまいこと検索条件を組み立てるだけで > 欲しい情報が得られたりするのでしょうか。 上述の通り、今はできないのですが、これらを取得するのはプリミ ティブな感じにする方がいいかなぁと思っています。