Hiroyuki Sato
hiroy****@gmail*****
2015年 7月 6日 (月) 10:17:45 JST
横山様 佐藤です。 ご連絡をありがとうございます。 gemのバージョンをあげたら動作するようになりました。 ありがとうございました。 2015年7月6日 10:10 Masafumi Yokoyama <yokoy****@clear*****>: > 横山です。 > > On 2015年07月06日 10:08, Masafumi Yokoyama wrote: >> 横山です。 >> >>> `require': uninitialized constant Groonga::Posting (NameError) >> >> このエラーですが、RubyGemsが古い場合に起こるようです。 >> RubyGemsのバージョンは以下のコマンドで確認できます。 >> >> % gem --v > > すみません、オプションを間違えました。 > 以下のどちらかをお使いください。。。 > > % gem -v > % gem --version > > >> 現在の最新が2.4.8のようなので、もしそれより古いバージョンなら >> 以下の手順などでRubyGemsをアップデートして試してもらえますか? >> >> % gem install rubygems-update >> % update_rubygems >> >> >> On 2015年07月06日 09:29, Hiroyuki Sato wrote: >>> 須藤様 >>> >>> 佐藤です。 >>> ありがとうございます。 >>> >>> Recordの_idとPOSITION情報を出力して、gistに反映しようと思ったのですがgroonga-index-dumpは >>> 出力が多そうですね。他の方法を考えようと思います。 >>> >>> 余談ですが私の環境でgroonga-index-dumpを実行すると下記のエラーが出てしまいます。 >>> 私の環境だけですかね? >>> >>> ・OSX 10.10.4 >>> ・Ruby 2.2.1 >>> ・rgroonga: 5.0.3 >>> >>> groonga-index-dump --output-directory /tmp/dd test.db >>> /path/to/home/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:69:in >>> `require': uninitialized constant Groonga::Posting (NameError) >>> from /path/to/home/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:69:in >>> `require' >>> from /path/to/home/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/rroonga-5.0.3/bin/groonga-index-dump:23:in >>> `<top (required)>' >>> from /path/to/home/.rbenv/versions/2.2.1/bin/groonga-index-dump:23:in `load' >>> from /path/to/home/.rbenv/versions/2.2.1/bin/groonga-index-dump:23:in `<main>' >>> >>> >>> >>> 2015年7月3日 21:41 Kouhei Sutou <kou****@clear*****>: >>>> 須藤です。 >>>> >>>> In <CA+Tq****@mail*****> >>>> "[groonga-dev,03339] インデックスの情報を詳細出力する方法" on Fri, 3 Jul 2015 11:44:18 +0900, >>>> Hiroyuki Sato <hiroy****@gmail*****> wrote: >>>> >>>>> おかげさまでGroongaの仕組みを詳しく理解することができました。 >>>> >>>> よかったです! >>>> >>>>> https://gist.github.com/hiroyuki-sato/27142229622c74803069 >>>> >>>>> Groongaの場合、TokenBigramを指定しても2文字ずつに分解を行うのは非ASCII文字の場合のみである。 >>>> >>>> が少し説明不足で、正規化処理が行われたときだけ↑の挙動になり >>>> ます。正規化処理をしない場合はASCIIの文字も2文字ずつに分解し >>>> ます。 >>>> >>>>> * 文字がASCIIの場合: 単語単位に分割??(ここ怪しい) >>>> >>>> 補足すると、連続するアルファベットを1トークンにする(1文字の >>>> トークンにもなりえるし、3文字以上のトークンにもなりえる)、 >>>> が実際の挙動です。同様に連続する数字も1トークン、連続する記 >>>> 号も1トークンにします。 >>>> >>>>> selectコマンド等で、POSITIONの情報や全てのRecordの_idを出力する方法は >>>>> ありますでしょうか? >>>> >>>> selectコマンドではできないんです。 >>>> Rroongaにgroonga-index-dumpという実行ファイル(コマンドなん >>>> ですが、Groongaのコマンドと紛らわしいのでここでは実行ファイ >>>> ルと書きます)があって、それを使うと出力できます。 >>>> >>>> % groonga-index-dump --output-directory /tmp/index-dump DB_PATH >>>> >>>> というように使います。そうすると、/tmp/index-dump/ディレクト >>>> リー以下にモリモリとファイルができます。1トークン1ファイルに >>>> なっていて、その中にそのトークンのPOSITION情報やレコードのキー >>>> (_idではないです)が出力されます。 >>>> >>>> 例えば、るりまサーチというやつのデータベースだとこんな感じの >>>> ファイルができます。(トークンはURLのように%エンコードされて >>>> ファイル名になります。) >>>> >>>> /tmp/index-dump/Bigram.Entries_description/%21%2A%22%29.dump: >>>> -- >>>> index: Bigram.Entries_description term: <!*")> domain: Bigram range: Entries have_section: false have_weight: false have_position: true >>>> weight position term_frequency record >>>> 0 360 2 Entries[1.9.3:DL::Importer#bind:bind(signature, *opts) { ... } -> DL::Function].description >>>> 0 389 2 Entries[1.9.3:DL::Importer#bind:bind(signature, *opts) { ... } -> DL::Function].description >>>> 0 360 2 Entries[2.0.0:DL::Importer#bind:bind(signature, *opts) { ... } -> DL::Function].description >>>> 0 389 2 Entries[2.0.0:DL::Importer#bind:bind(signature, *opts) { ... } -> DL::Function].description >>>> 0 360 2 Entries[2.0.0:Fiddle::Importer#bind:bind(signature, *opts) { ... } -> Fiddle::Function].description >>>> 0 389 2 Entries[2.0.0:Fiddle::Importer#bind:bind(signature, *opts) { ... } -> Fiddle::Function].description >>>> 0 360 2 Entries[2.1.0:DL::Importer#bind:bind(signature, *opts) { ... } -> DL::Function].description >>>> 0 389 2 Entries[2.1.0:DL::Importer#bind:bind(signature, *opts) { ... } -> DL::Function].description >>>> 0 360 2 Entries[2.1.0:Fiddle::Importer#bind:bind(signature, *opts) { ... } -> Fiddle::Function].description >>>> 0 389 2 Entries[2.1.0:Fiddle::Importer#bind:bind(signature, *opts) { ... } -> Fiddle::Function].description >>>> -- >>>> >>>>> 下記のTermsテーブル・カラムにはインデックスのキーワードがマッチする、 >>>>> Bookテーブルの_idと、レコード内の単語の位置が格納されると思います。 >>>>> >>>>> 例えば、Groongaという単語は、ISBN2の0文字目、ISBN6の8文字目にあるので、 >>>>> [ISBN2,0], [ISBN6,8]という情報を保持していることになると思います。 >>>>> >>>>> select文等を使ってその内容を確認したいのですが可能でしょうか? >>>> >>>> ということで、selectではできないのですが、groonga-index-dump >>>> を使うと可能です。 >>>> >>>>> 下記のクエリだとgroongaは[3,"groonga",4]となっており1件の情報のみしか表示されておりません。 >>>> >>>> 実は、selectでインデックスカラムを出力すると、そのトークンで >>>> 検索したときに何件くらいレコードがヒットしそうかという推定値 >>>> が返ります。この挙動は今後変わるかもしれないんですが、今は >>>> (というかもうずっと)この挙動になっています。 >>>> >>>> -- >>>> 須藤 功平 <kou****@clear*****> >>>> 株式会社クリアコード <http://www.clear-code.com/> >>>> >>>> Groongaベースの全文検索システムを総合サポート: >>>> http://groonga.org/ja/support/ >>>> パッチ採用 - プログラミングが楽しい人向けの採用プロセス: >>>> http://www.clear-code.com/recruitment/ >>>> >>>> _______________________________________________ >>>> groonga-dev mailing list >>>> groon****@lists***** >>>> http://lists.osdn.me/mailman/listinfo/groonga-dev >>> >>> >>> >> >> > > > -- > 横山 昌史 <Masafumi Yokoyama> > E-mail: yokoy****@clear***** > 株式会社クリアコード > 〒170-0005 東京都豊島区南大塚3-29-9 > Tel: 03-5927-9440 > Web: http://www.clear-code.com/ > > Groongaベースの全文検索システムを総合サポート: > http://groonga.org/ja/support/ > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev -- Hiroyuki Sato