PHP扩展之针对搜索引擎的扩展(二)—— Sphinx简介、安装及使用
该扩展提供了针对Sphinx搜索客户端开发库的绑定. Sphinx是一个独立的搜索引擎系统,其目的是为其他相关程序和应用提供快速的、规模可扩展的全文搜索功能. Sphinx有着良好的设计,可以很方便的与SQL数据库结合,并使用脚本语言调用. Sphinx 以及 其客户端库 可以从 官方站点获取,中文用户也可以从Coreseek获取支持中文的版本和服务。
安装需求:需要PHP5.2.2及以上PHP版本。
安装步骤请参考:Linux下编译安装Sphinx、中文分词coreseek及PHP的sphinx扩展
安装过程中,如果 ./configure 不能正确找到 libsphinxclient 文件 (例如, 他被安装在用户自己定义的目录中),使用 ./configure --with-sphinx=$PREFIX来制定libsphinxclient的具体位置($PREFIX是libsphinxclient的安装位置)。
编译安装:
从http://pecl.php.net/package/sphinx下载所需的sphinx扩展源码安装包,解压到指定目录,进入该目录。
./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx=/usr/local/libsphinxclientmakesudo make install二、使用实例
Example #1 基本使用范例
<?php$s = new SphinxClient;$s->setServer('localhost', 6712);$s->setMatchMode(SPH_MATCH_ANY);$s->setMaxQueryTime(3);$result = $s->query('test');var_dump($result);?>
以上例程的输出类似于:
array(10) { ['error']=> string(0) '' ['warning']=> string(0) '' ['status']=> int(0) ['fields']=> array(3) {[0]=> string(7) 'subject'[1]=> string(4) 'body'[2]=> string(6) 'author' } ['attrs']=> array(0) {} ['matches']=> array(1) {[3]=> array(2) { ['weight']=> int(1) ['attrs']=> array(0) {} } } ['total']=> int(1) ['total_found']=> int(1) ['time']=> float(0) ['words']=> array(1) { ['to']=> array(2) { ['docs']=>int(1) ['hits']=>int(1) } }}三、SphinxClient 类
SphinxClient 为 Sphinx 提供了面向对象的接口
SphinxClient::addQuery — Add query to multi-query batchSphinxClient::buildExcerpts — Build text snippetsSphinxClient::buildKeywords — Extract keywords from querySphinxClient::close — 关闭先前打开的持久连接SphinxClient::__construct — Create a new SphinxClient objectSphinxClient::escapeString — Escape special charactersSphinxClient::getLastError — Get the last error messageSphinxClient::getLastWarning — Get the last warningSphinxClient::open — 建立到搜索服务端的持久连接SphinxClient::query — 执行搜索查询SphinxClient::resetFilters — Clear all filtersSphinxClient::resetGroupBy — Clear all group-by settingsSphinxClient::runQueries — Run a batch of search queriesSphinxClient::setArrayResult — 控制搜索结果集的返回格式SphinxClient::setConnectTimeout — Set connection timeoutSphinxClient::setFieldWeights — Set field weightsSphinxClient::setFilter — 增加整数值过滤器SphinxClient::setFilterFloatRange — Add new float range filterSphinxClient::setFilterRange — Add new integer range filterSphinxClient::setGeoAnchor — Set anchor point for a geosphere distance calculationsSphinxClient::setGroupBy — Set grouping attributeSphinxClient::setGroupDistinct — Set attribute name for per-group distinct values count calculationsSphinxClient::setIDRange — Set a range of accepted document IDsSphinxClient::setIndexWeights — Set per-index weightsSphinxClient::setLimits — 设置返回结果集偏移量和数目SphinxClient::setMatchMode — 设置全文查询的匹配模式SphinxClient::setMaxQueryTime — Set maximum query timeSphinxClient::setOverride — Sets temporary per-document attribute value overridesSphinxClient::setRankingMode — Set ranking modeSphinxClient::setRetries — Set retry count and delaySphinxClient::setSelect — Set select clauseSphinxClient::setServer — 设置searchd的主机名和TCP端口SphinxClient::setSortMode — Set matches sorting modeSphinxClient::status — Queries searchd statusSphinxClient::updateAttributes — Update document attributes相关文章: