使用PHP绑定方式调用Groonga

使用Groonga的PHP绑定来访问。

Groonga 的 PHP 绑定。

安装

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上进行开发,所以建议使用更高版本。

班级列表 jí

Groonga类
GCommand类
GTable类
GColumn类
GLoad类
GDelete类
GSelect类

范例

微博.php

进行连接处理

/* GQTPによる接続 */
$gdb = new Groonga('127.0.0.1', 10043);


/* 内部DBとして利用する */
$gdb = new Groonga('./db/test.db');

如果指定了端口号,将使用GQTP进行连接。

Groonga内置命令

内嵌命令的Groonga

$gdb = new Groonga('./db/test.db');

$result = $gdb->command('status')->exec();

只要您注册了的命令,都可以使用。

使用方法链进行调用

当我将这些类设置为可在方法链中执行时,我的类数量变得异常庞大。
感觉就像是从Groonga类中调用了各个类。

代码

/* 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的命令太方便了,难以回到普通的写法……

bannerAds