引き続き、ちょっと気になったので少しだけ触ってみた。
手順は以下。
1.Groongaインストール
2.軽く検証
1.Groongaインストール
これだけ。Elasticsearchは色々入れたけど、こっちはちょっと触るぶんにはこれだけで良さげ。
# rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm # yum makecache # yum install -y groonga # yum install -y groonga-tokenizer-mecab # yum install -y groonga-normalizer-mysql # yum install groonga-httpd
2.軽く検証
とりあえず住所漢字とカナだけ入れたテーブルを定義。
# vi table.ddl table_create text TABLE_PAT_KEY UInt32 column_create text full_address_kana COLUMN_SCALAR LongText column_create text full_address_kanji COLUMN_SCALAR LongText table_create text-text TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram column_create text-text index COLUMN_INDEX|WITH_SECTION|WITH_POSITION text title ,text
作った定義を反映させ、サービス再起動。
# groonga -n /var/lib/groonga/db/tokudb < table.ddl # chown groonga:groonga /var/lib/groonga/db/tokudb* # systemctl restart groonga-httpd
デフォルトだとport 10041でサービス提供しているが、tokudbって別のファイル作ってしまったので、別ポートでサービス立ち上げる。
# groonga -p 8080 -d --protocol http /var/lib/groonga/db/tokudb
この時点でブラウザから http://マシンのIPまたはホスト名:8080/ で色々確認可能。
そして検索用データをとりあえず二件投入。日本語検索失敗した時のため、full_address_kanaにxxxxxxのレコードも入れておく。
# curl -X POST 'http://localhost:8080/d/load?table=text' -d '[{"_key":90600000,"full_address_kana":"ホッカイドウサッポロシチュウオウク","full_address_kanji":"北海道札幌市中央区"}]' # curl -X POST 'http://localhost:8080/d/load?table=text' -d '[{"_key":90600001,"full_address_kana":"xxxxxx","full_address_kanji":"北海道札幌市中央区"}]'
検索。うまく日本語でも検索できた。結果は見やすい様に改行をいれてある。
# curl 'http://localhost:8080/d/select?table=text&match_columns=full_address_kanji&query=北海道' [ [0,1483431027.866515,0.9462976455688477], [ [ [2], [["_id","UInt32"],["_key","UInt32"],["full_address_kana","LongText"],["full_address_kanji","LongText"]], [1,90600000,"ホッカイドウサッポロシチュウオウク","北海道札幌市中央区"], [2,90600001,"xxxxxx","北海道札幌市中央区"] ] ] ]
続いて、アナライズ確認。MeCab指定なので、結果はElasticsearchの時と同じだが、iPhone→iphoneな所が異なる。
この辺は設定かな。
# groonga > register normalizers/mysql [[0,1483431378.979351,0.0401461124420166],true] > tokenize TokenMecab "iPhoneは人々の生活を一変させました。" NormalizerAuto [ [0,1483431439.346163,0.2017147541046143], [ {"value":"iphone","position":0,"force_prefix":false}, {"value":"は","position":1,"force_prefix":false}, {"value":"人々","position":2,"force_prefix":false}, {"value":"の","position":3,"force_prefix":false}, {"value":"生活","position":4,"force_prefix":false}, {"value":"を","position":5,"force_prefix":false}, {"value":"一変","position":6,"force_prefix":false}, {"value":"さ","position":7,"force_prefix":false}, {"value":"せ","position":8,"force_prefix":false}, {"value":"まし","position":9,"force_prefix":false}, {"value":"た","position":10,"force_prefix":false}, {"value":"。","position":11,"force_prefix":false} ] ]