PHP使用Sphinx API对Mysql数据进行全文检索

这篇博客介绍了如何在PHP中利用Sphinx进行全文检索,展示了如何配置和调用Sphinx客户端,以及如何处理搜索关键词以提高匹配精度。通过示例代码,可以看出Sphinx在PHP中的应用能实现快速且准确的搜索结果,适用于各种网站和项目的轻量级解决方案。
//使用sphinx进行全文检索
function search_by_sphinx($keywords,$offset,$limit) {
	include_once app_path() . '/mylibs/sphinxapi.php';
	$client = new \SphinxClient();
	$host = "127.0.0.1";
	$port = 9312;
	$client->SetServer ( $host, $port );
	$client->SetConnectTimeout ( 1 );
	$client->SetArrayResult ( true );
	$client->SetLimits($offset,$limit);
	//$client->SetSortMode(SPH_SORT_ATTR_DESC,'view_count');
	
	$index_name = "index_demo";
	
	$keywords_clean = $keywords;
	$words_list_new = array();
	// | 表示或的意思
	$words_list = explode('|',$keywords);
	foreach ($words_list as $value) {
		if (mb_trim($value) == '') continue;
		if (mb_strlen($value) > 2) {
			//超过2个字符,使用模糊匹配
			$words_list_new[] = '(' . $value . ')';
		} else {
			//小于等于两个字符,使用必须包含符号;双引号表示必须包含;
			$words_list_new[] = '("' . $value . '")';
		}
	}
	//重新用空格分割
	$keywords_clean = implode('|',$words_list_new);
	$keywords = $keywords_clean;

	//全文检索
	$r = $client->Query($search_str,$index_name);

	$total = $r['total'];
	$total_found = $r['total_found'];
	$matches = $r['matches'];
	
	//组合一下结果
	$list_arr = array();
	$list_arr['total'] = $total;
	$list_arr['total_found'] = $total_found;
	$list_arr['matches'] = $matches;
	return $list_arr;
}

 

PHP使用Sphinx查询速度很快,结果也匹配的很不错,算是轻量级的解决方案。

目前,古诗句网广场舞网站都用的不错,接下来有很多地方都能用到。

Coreseek 全文检索服务器 2.0 (Sphinx 0.9.8)参考手册和源程序 手册內容: 文档版本:v0.9 目录 1. 简介 1.1. 什么是 Sphinx 1.2. Sphinx 的特性 1.3. 如何获得 Sphinx 1.4. 许可协议 1.5. 作者和贡献者 1.6. 开发历史 2. 安装 2.1. 支持的操作系统 2.2. 依赖的工具 2.3. 安装 Sphinx 2.4. 已知的问题和解决方法 2.5. Sphinx 快速入门教程 3. 建立索引 3.1. 数据源 3.2. 属性 3.3. 多值属性 ( MVA : multi-valued attributes) 3.4. 索引 3.5. 数据源的限制 3.6. 字符集 , 大小写转换 , 和转换表 3.7. SQL 数据源 (MySQL, PostgreSQL) 3.8. xmlpipe 数据源 3.9. xmlpipe2 数据源 3.10. 实时索引 更新 3.11. 索引合并 4. 搜索 4.1. 匹配模式 4.2. 布尔查询 4.3. 扩展查询 4.4. 权值计算 4.5. 排序模式 4.6. 结果分组(聚类) 4.7. 分布式搜索 4.8. searchd 日志格式 5. API 参考 5.1. 通用 API 方法 5.1.1. GetLastError 5.1.2. GetLastWarning 5.1.3. SetServer 5.1.4. SetRetries 5.1.5. SetArrayResult 5.2. 通用搜索设置 5.2.1. SetLimits 5.2.2. SetMaxQueryTime 5.3. 全文搜索设置 5.3.1. SetMatchMode 5.3.2. SetRankingMode 5.3.3. SetSortMode 5.3.4. SetWeights 5.3.5. SetFieldWeights 5.3.6. SetIndexWeights 5.4. 结果集过滤设置 5.4.1. SetIDRange 5.4.2. SetFilter 5.4.3. SetFilterRange 5.4.4. SetFilterFloatRange 5.4.5. SetGeoAnchor 5.5. GROUP BY 设置 5.5.1. SetGroupBy 5.5.2. SetGroupDistinct 5.6. 搜索 5.6.1. Query 5.6.2. AddQuery 5.6.3. RunQueries 5.6.4. ResetFilters 5.6.5. ResetGroupBy 5.7. 额外的方法 5.7.1. BuildExcerpts 5.7.2. UpdateAttributes 6. MySQL 存储引擎 (SphinxSE) 6.1. SphinxSE 概览 6.2. 安装 SphinxSE 6.2.1. 在 MySQL 5.0.x 上 编译 SphinxSE 6.2.2. 在 MySQL 5.1.x 上编译 SphinxSE 6.2.3. SphinxSE 安装测试 6.3. 使用 SphinxSE 7. 报告 bugs 8. sphinx.conf 选项参考 8.1. Data source 配置选项 8.1.1. type 8.1.2. sql_host 8.1.3. sql_port 8.1.4. sql_user 8.1.5. sql_
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值