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