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

这篇博客介绍了如何在PHP中利用Sphinx进行全文检索,展示了如何配置和调用Sphinx客户端,以及如何处理搜索关键词以提高匹配精度。通过示例代码,可以看出Sphinx在PHP中的应用能实现快速且准确的搜索结果,适用于各种网站和项目的轻量级解决方案。
摘要由CSDN通过智能技术生成
//使用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查询速度很快,结果也匹配的很不错,算是轻量级的解决方案。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值