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 ...
随机推荐
- 整理的各种模板 (随时弃坑emmmmm)
线段树: #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> ...
- php删除文件
unlink() 函数删除文件. 若成功,则返回 true,失败则返回 false. unlink里的参数需要文件的绝对路径
- Codeforces 1152D(dp)
要点 寻找最多边的匹配的结论:贪心地从叶子开始找,最后答案都是奇数层下边的那条边. 设\(dp[i][j]\)表示当前长度为\(i\),平衡度为\(j\),平衡度为(数量减去)数量. 增加左右括号转移 ...
- loj#6169. 相似序列 hash+主席树
因为他的相似是在排完序下的 那我就在排序的情况下hash啊 这怎么hash啊 主席树啊! 没了 #include <bits/stdc++.h> #define MAXNODE 50000 ...
- 2017 ACM Arabella Collegiate Programming Contest div2的题,部分题目写个题解
F. Monkeying Around 维护点在多少个线段上 http://codeforces.com/gym/101350/problem/F 题意:有m个笑话,每个笑话的区间是[L, R], ...
- 2、linux基础知识与技能
2.1.linux内核.发行版linux本身指的是一个操作系统内核,只有内核是无法直接使用的.我们需要的,可以使用的操作系统是一个包含了内核和一批有用的应用程序的一个集合体,这个就叫linux发行版. ...
- css3背景与边框相关样式
background-attachment 背景图像是否固定或者随着页面的其余部分滚动 background-color 设置元素的背景颜色 b ...
- jsoup爬虫,项目实战,欢迎收看
import com.mongodb.BasicDBObject import com.mongodb.DBCollection import org.jsoup.Jsoup import org.j ...
- codevs 4888 零件分组
4888 零件分组 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 现有一些棍状零件,每个零件都有 ...
- 1008 选数 2002年NOIP全国联赛普及组
1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description ...