本家様 http://groonga.org/ja/

phpモジュールphp/Groonga

CentOS 7にインストールしてみます。
まずはリポジトリをインストール

[root@c ~]# yum install https://packages.groonga.org/centos/groonga-release-latest.noarch.rpm
 
[root@c ~]# cat /etc/yum.repos.d/groonga.repo
[groonga]
name=Groonga for CentOS $releasever - $basearch
baseurl=https://packages.groonga.org/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-groonga
       file:///etc/pki/rpm-gpg/RPM-GPG-KEY-groonga-RSA4096
[root@c ~]#

そしてyumでパッケージをインストール

[root@c ~]# yum install --enablerepo=epel  groonga   groonga-tokenizer-mecab

データベースを作成

「groonga」コマンドで「-n データベース」を指定する。sqliteな感じ。

[illya@c ~]$ groonga -n introduction.db

と入力すると、プロンプト「>」が表示される。これもsqliteな感じかな。

[illya@c ~]$ groonga -n introduction.db
>

ここで終了するならプロンプト「>」に続いて「quit」と入力する。

[illya@c ~]$ groonga -n introduction.db
> quit
[[0,1534184543.388748,0.05745506286621094],true]
[illya@c ~]$

ここまでで作られたファイルは

[illya@c ~]$ ls -l introduction.db*
-rw-r----- 1 illya fate     4096  8月 14 03:19 introduction.db
-rw-r----- 1 illya fate 12857344  8月 14 03:19 introduction.db.0000000
-rw-r----- 1 illya fate  1048576  8月 14 03:19 introduction.db.001
-rw-r----- 1 illya fate 12632064  8月 14 03:19 introduction.db.conf
[illya@c ~]$

となる。
これでデータベースが作成されたので、次回からは「-n」なしでデータベースに接続する

[illya@c ~]$ groonga  introduction.db
>

テーブルを作成

*主なものだけ

Int8Int32FloatTimeShortTextTextLongText
範囲-128以上
127以下の整数
-2,147,483,648以上
2,147,483,647以下の整数
倍精度
浮動小数点数
マイクロ秒
単位のepoch
4,095バイト以下
の文字列
65,535バイト以下
の文字列
2,147,483,647バイト
以下の文字列

*Text型とLongText型は主キーにはなれない

SQL文で下記のようなテーブルを設けたいと思う

CREATE TABLE sample (
  url   varchar(512) primary key,
  title varchar(512),
  contents text
);

その場合、

[illya@c ~]$ groonga  introduction.db
> table_create --name sample --flags TABLE_HASH_KEY --key_type ShortText
> column_create --table sample --name url --type ShortText
> column_create --table sample --name title --type ShortText
> column_create --table sample --name contents  --type Text
 
 
 
> table_create   --name SearchTrackTerms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer TokenMecab --normalizer NormalizerAuto
> column_create --table SearchTrackTerms --name blog_contents  --flags COLUMN_INDEX|WITH_POSITION --type sample --source contents

留意
テーブルには、データ保存用のインデックス用の2つがある
データ用のテーブルを作成して、全文検索用、単なる検索用のインデックスを設ける際、この「検索用」テーブルが必要

作成済みテーブルの確認

> table_list

作成済みテーブルのカラム、フィールドを確認

> column_list テーブル名

検索する

> select Municipality --filter  'contents@"意見"'

テーブル「Municipality」でカラム「contents」から文字列「意見」を検索

同様に

> select Municipality --match_columns  contents --query 意見

とも書ける

検索ヒット件数を得る

「--limit 0」で得られる

> select Municipality --match_columns  contents --query 意見 --limit 0

登録済みレコードの数

> object_inspect <テーブル名>

にて確認可能

grnwrap

groongaからの出力を整形してくれるwrapper。
一行でずらずら出されるのもいいのだが、整形したほうが読みやすい。

[root@c ~]# cd src/
[root@c src]# git clone https://github.com/michisu/grnwrap
 
[root@c src]# cp grnwrap/grnwrap /usr/local/bin/
[root@c src]# vi /usr/local/bin/grnwrap
 
- GROONGA_DEFAULT = '/usr/local/bin/groonga'
+ GROONGA_DEFAULT = '/bin/groonga'
 
[root@c src]#

mecab

tokenize TokenMecab "東京都"


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2019-05-23 (木) 03:05:06 (123d)