Proong

GroongaのPHPライブラリを作っています。
https://github.com/Yujiro3/proonga

インストール
Groongaライブラリ

$ sudo aptitude install -y libgroonga0 libgroonga-dev
Groonga v4.0.7で追加されたC-APIを利用しています。
最新版のライブラリを利用してください。

proongaのインストール

$ git clone https://github.com/Yujiro3/proonga.git
$ cd ./proonga
$ phpize
$ ./configure
$ make
$ sudo -s
# make install
# cd /etc/php5/mods-available
# echo extension=groonga.so > proonga.ini
# cd /etc/php5/conf.d
# ln -s ../mods-available/proonga.ini ./30-proonga.ini

php_json_encode_exを利用してます。
php5-jsonを有効にしてください。
CentOSなどでは、php-commonに含まれているので
proonga.iniの読み込みタイミングに気をつけてください。

phpの下位互換用の分岐を書いていません。
php5.3.x以上で動くと思いますが、PHP 5.5.18で開発しています。

クラス一覧
Groongaクラス
GCommandクラス
GTableクラス
GColumnクラス
GLoadクラス
GDeleteクラス
GSelectクラス

サンプル
micro_blog.php https://gist.github.com/Yujiro3/1ce4908b191cfaf77b5d
コード

/* select --table Users --match_columns name,location_str,description --query "New York" --output_columns _key,name */
$result = $gdb->table('Users')
    ->select()
    ->matchColumns('name,location_str,description')
    ->query('"New York"')
    ->outputColumns('_key,name')
    ->exec(true);

echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_BIGINT_AS_STRING);

結果

[
    [
        [
            1
        ],
        [
            [
                "_key",
                "ShortText"
            ],
            [
                "name",
                "ShortText"
            ]
        ],
        [
            "bob",
            "Bob"
        ]
    ]
]

Groongaの組み込みコマンドを実行するクラス群です。
極力ソースを書かないように心がけたのでバグも少ないはずです。

CentOSでzend_call_method_with_*_params()関数がうまく動かなかったので
MongoDBのバインディングとかが使っている方法を試してみました。
とりあえず問題ないようです。

Groongaの組み込みコマンドが楽ちん過ぎて普通書き方に戻れない。。。

お役立ちリンク
Groonga Cライブラリを使う上で知っておいてほしいこと

Groonga関連のドキュメント

Groonga組み込みコマンドの利用

Leave a reply