sphinx关键字套红
sphinx定义搜索结果,搜索的内容着重显示,可以使用下面代码
<?php
/**
* Created by PhpStorm.
* User: pc00001
* Date: 2015/4/10
* Time: 14:18
*/
header('Content-type:text/html;charset=utf-8');
include_once('sphinxapi.php'); $sp = new SphinxClient(); $sp ->SetServer('127.0.0.1',9312); //server连接
$sp ->SetConnectTimeout(5); //超时时间
$sp ->SetLimits(0,10); //取出条数 $keywords = isset($_REQUEST['ky'])?$_REQUEST['ky']:'新款'; $res = $sp ->Query($keywords,'*'); $res_id = (implode(',',array_keys($res['matches']))); $conn= mysql_connect('127.0.0.1','root','');
mysql_query('set names utf8');
mysql_query('use ldds');
$sql = "select*from ld_goods where goods_id in ($res_id)";
$tmp = mysql_query($sql,$conn); $query_res = array();
while($row = mysql_fetch_assoc($tmp)){
$query_res[] = $row;
} $goods_name = array();
$res = array();
//定义关键字标注内容
$build_opts = array(
'before_match'=>"<font color='red'>", //在关键字之前添加的html
'after_match'=> '</font>' //在关键字之后添加的html
); foreach($query_res as $k=>$v){
$goods_name[$k] = $v['goods_name'];
} //参数分别是 (需要标注的内容,索引名称,关键字,定义关键字设置数组)
$res = $sp -> BuildExcerpts($goods_name,'mysql',$keywords,$build_opts);
print_r($res);
//var_dump($goods_name);exit;
结果显示类似下面内容
[0] => 正品 2014春装新款 女 绣花针织衫 开衫外套浮桑初 蓝色 [1] => 正品 2014春装新款 女 绣花针织衫 开衫外套浮桑初 绿色
其他常用方法
其他Sphinxapi中常用方法 1 $sp -> SetMatchMode( );
SPH_MATCH_ALL, 匹配所有查询词(默认模式)
SPH_MATCH_ANY, 匹配查询词中的任意一个
SPH_MATCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配
SPH_MATCH_BOOLEAN, 将查询看作一个布尔表达式 (实现不包含关键词的搜索)
SPH_MATCH_EXTENDED, 将查询看作一个Sphinx内部查询语言的表达式 $sp->SetFilterRange ( $attribute, $min, $max, $exclude=false );
添加新的整数范围过滤器
$sp->SetFilterRange (‘dateline’,time()-3600,time());//查询某个时间段 $sp->SetFilter ( $attribute, $values, $exclude=false );//查询指定字段为value,如通过uid查
增加整数值过滤器。 $sp->SetSortMode ( $mode, $sortby=“” ) ;
设置匹配项的排序模式,6种模式
SPH_SORT_EXPR 模式,按某个算术表达式排序。
$uptime = time() - 60*60*24*60;
$sp->SetSortMode(SPH_SORT_EXPR, "@weight + IF(dateline > $uptime,1,0)“)
$sp->SetFieldWeights ( $weights );//按字段名称设置字段的权值
if (!$is_bytitle) {
$weight = array(
'title'=> 10,'content'=> 100,
);
} else {
$weight = array(
'title'=> 100,'content'=> 10,
);
}
$sp->SetFieldWeights($weights); // 适用于按标题搜索,或者按内容搜索
$sp->SetFilterFloatRange( $attribute, $min, $max, $exclude=false );
增加新的浮点数范围过滤器。使用方法类似于整型过滤
注意:使用这些方法,需要将数据所在字段的内容加入到索引中。如配置文件中:
sql_attr_uint = click
sql_attr_timestamp = dateline
另外这些方法必须在Query()方法执行前执行。
sphinx关键字套红的更多相关文章
- 作为一个新手的Oracle(DBA)学习笔记【转】
一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...
- Sphinx高亮显示关键字
选取程序中使用的一部分代码: public function buildExcerptRows($ids) { $options = array( 'before_match' => '< ...
- 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)
一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...
- 全文检索解决方案(lucene工具类以及sphinx相关资料)
介绍两种全文检索的技术. 1. lucene+ 中文分词(IK) 关于lucene的原理,在这里可以得到很好的学习. http://www.blogjava.net/zhyiwww/archive/ ...
- [搜索引擎]Sphinx的介绍和原理探索
What/Sphinx是什么 定义 Sphinx是一个全文检索引擎. 特性 索引和性能优异 易于集成SQL和XML数据源,并可使用SphinxAPI.SphinxQL或者SphinxSE搜索接口 易于 ...
- sphinx应用
sphinx调用原理 只需要提交要查询,sphinx将返回唯一的id号 API调用 1.创建连接 $sphinx = new SphinxClient(); $sphinx->SetServ ...
- sphinx 配置文件全解析
sphinx的配置文件是在配置的时候最容易出错的了: 我们先要明白几个概念: source:数据源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一 ...
- sphinx全文检索 安装配置和使用
公司项目刚刚导入大量产品数据,然后发现网站的产品搜索很卡,原本是原生sql的like来做模糊搜索,数据量20W的时候还可以接受,但是上百万就很卡了,所以需要做优化. 经过考虑,打算采用全文检索 sph ...
- sphinx教程
http://www.php100.com/html/it/focus/2013/0916/6188.html### 以上一篇的email数据表为例: 数据结构: 01.CREATE TABLE em ...
随机推荐
- Nacos深入浅出(六)
其实我们发现在我们本地新生成了文件,这个文件就是nacos; 这个文件怎么那么眼熟,不就是我们的controller中的注解里面的参数value么: @Controller @NacosPropert ...
- 洛谷P2194 HXY烧情侣
题目描述 众所周知,\(HXY\)已经加入了\(FFF\)团.现在她要开始喜\((sang)\)闻\((xin)\)乐\((bing)\)见\((kuang)\)地烧情侣了.这里有\(n\)座电影院, ...
- IBM Websphere MQ常用命令及常见错误
MQSC: MQ Script Command (不区分大小写) 注明: 下面命令行中的队列管理器名字,队列名字分别用QmgrName, QName替代. 下面标蓝色的,都需要根据实际配置更改! 打 ...
- Python内建函数二
内置函数二: 1.lambda (匿名函数) 为了解决一些简答的需求而设计的一句话函数.不需要def来声明. def func(n): return n*n f = lambda n: n*n 注意: ...
- linux 01 基础命令
linux 01 基础命令 对于Linux要记住一个概念,一切皆文件,哪怕是目录,也是一个文件 1.修改用户密码 sudo passwd pyvip@Vip:~$ #pyvip表示用户名, Vip表示 ...
- [NWPU2016][寒假作业][正常版第二组]U
题意,有箱子和物品,宽度一样,长度不一样,给定箱子和物品,一个箱子至多能装两个物品,一个物品只能被一个箱子装,求最少多少箱子能装所有的物品. 思路:贪心的话,很容易想到,从大到小排,从最大的开始,往后 ...
- 熔断降级(Polly)
熔断降级(Polly) https://www.cnblogs.com/qhbm/p/9224307.html 一. 什么是熔断降级 熔断就是"保险丝".当出现某些状况时,切断服务 ...
- Vnc在Ubuntu14.04上的安装和配置 安装:
安装: Ubuntu14.04 : sudo apt-get install vnc4server : sudo apt-get install xrdp iPad : 安装 vnc viewer 或 ...
- 关于C#操作Excel,复制Sheet的记录
1.先用了NPOI,去做,HSSFWorkbook 里面有一个Copy方法,但这个只支持office2003. 对应的XSSFWorkbook没有些方法. 而且这个这个方法对devexpress导出的 ...
- IIS访问网站出错[要求输入用户名密码]的解决方案
症状: 1.HTTP 500 - 内部服务器错误 2.您不具备使用所提供的凭据查看该目录或页的权限 3.基于所提供的凭据,您没有权限查看此目录或网页.HTTP 错误 401.3 - 访问被资源 ACL ...