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 ...
随机推荐
- 初次学习DropWizard框架——解决maven打包时出现没有主清单属性的问题
笔者因为公司的项目需要,开始接触DropWizard框架,照着官网https://www.dropwizard.io/0.9.2/docs/getting-started.html撸了一遍. 工具为I ...
- Codeforces #564div2 E1(记忆化搜索)
虽然不是正解但毕竟自己做出来了还是记下来吧- 对每个人分别dfs得到其期望,某两维的组合情况有限所以Hash一下避免了MLE. #include <cstdio> #include < ...
- Linux 运维培训笔记
2018/01/05 权限管理:sudoers文件 KAIFA_ADMINS ALL=(OP1) KAIFACMD 用户(大写) ...
- ms sqlserver 登录失败 错误:4064
无法打开用户默认数据库.登录失败.用户‘sa’登录失败.(Microsoft SQL Server, 错误:4064) 解决方法:解决方法:先用windows身份验证的方式登录进去,然后在 安全性=& ...
- Android sdk manager 显示 “Done loading packages”,该怎么办?
试了这个方法:请用管理员的身份运行"SDK Manager.exe".不管用. 下面的方法可以: 在SDK Manager下Tools->Options打开了SDK Mana ...
- MS-SQL 时间的操作
1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd ...
- Java面向对象(接口、多态)
面向对象 今日内容介绍 u 接口 u 多态 第1章 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的 ...
- 网络文件系统(NFS)的使用
一.简介 NFS--Network FileSystem,即网络文件系统,主要功能是让网络上的不同操作系统之间共享数据. 远程服务器端共享出文件或目录,然后远羰共享出来的文件或目录就可通过挂 载的方式 ...
- iOS Programming Autorotation, Popover Controllers, and Modal View Controllers
iOS Programming Autorotation, Popover Controllers, and Modal View Controllers 自动旋转,Popover 控制器,Moda ...
- Java Object Model(一)
Java作为OOP语言,抽象性不言而喻.如果需要深入了解Java语言的实现机制,则不得不对Java语言中基础的概念有清晰的了解.今天是我在cnblog上写博客的第一天,希望今天的博客可以是我成为未来& ...