PHP搜索优化 sphinx 搭建测试
安装。环境:win7 64位
1、下载sphinx文件包
下载地址:http://sphinxsearch.com/downloads/archive/
2、解压到D:/sphinx。新建文件夹data 和 log,在本地test库中,导入example.sql文件。结构如下

3、配置 复制sphinx.conf.in文件到bin目录下。重命名为sphinx.conf。配置内容如下。每一行代表什么意思,目前我也说不清楚,后续吧...
注意两点:红色为我修改过的内容,黄底的地方,命名需要一致。
# 配置数据源
source src1
{
type = mysql
sql_host = localhsot
sql_user = root
sql_pass =
sql_db = test
sql_port =
sql_query_pre = SET NAMES utf8
sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
FROM documents
sql_attr_uint = group_id
sql_attr_timestamp = date_added
sql_ranged_throttle =
} source src1throttled : src1
{
sql_ranged_throttle =
} # 配置数据源生成的索引文件存放的位置
index test1
{
source = src1
path = D:/sphinx/data/test1 # 注意此处包含生成的文件路径和名称。会在data目录下生成test1.***格式的文件
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
docinfo = extern
dict = keywords
mlock =
morphology = none
min_word_len =
ngram_len =
ngram_chars = U+..U+2FA1F
html_strip =
} indexer
{
mem_limit = 128M
} # 配置Sphinx服务器的信息
searchd
{
listen =
listen = :mysql41
log = D:/sphinx/log/searchd.log
query_log = D:/sphinx/log/query.log
read_timeout =
client_timeout =
max_children =
persistent_connections_limit =
pid_file = D:/sphinx/log/searchd.pid
preopen_indexes =
unlink_old =
mva_updates_pool = 1M
max_packet_size = 8M
max_filters =
max_filter_values =
max_batch_queries =
workers = threads
# windows下启动searchd服务一定要注释掉这个
# seamless_rotate = 1
}
4、建立索引
indexer.exe test1

5、启动服务
searchd.exe --pidfile 或者 searchd

也可以制作成.bat文件,方便快速启动。新建文件“测试.bat”,用文本编辑器打开,写入如下内容。可以根据自己环境,自行修改。双击即可启动sphinx
@echo off
d:
cd\sphinx/bin
searchd
6、如果需要关闭服务,直接关闭DOC窗口
7、(拓展)php安装sphinx拓展就大概说一下。也可以不安装拓展,代码中引入文件即可
require('sphinxapi.php');
ext下加入dll文件
下载地址:http://pecl.php.net/package/sphinx
php.ini下配置。重启apache
extension=php_sphinx.dll
到此配置结束。
测试用例1。输出符合搜索关键词的ID
<?php
# 如果php中安装了sphinx.dll拓展,则不需要这一行代码
require('sphinxapi.php');
$keyword = 'test';
$sphinx = new SphinxClient;
$sphinx->setServer("localhost", );
$sphinx->setMatchMode(SPH_MATCH_ANY); //匹配模式 ANY为关键词自动拆词,ALL为不拆词匹配(完全匹配)
$sphinx->SetArrayResult ( true ); //返回的结果集为数组
$result = $sphinx->query($keyword,"test1"); //星号为所有索引源
$count=$result['total']; //查到的结果条数
$time=$result['time']; //耗时
$arr=$result['matches']; //结果集
$id='';
for($i=;$i<$count;$i++){
$id.=$arr[$i]['id'].',';
}
$id=substr($id,,-); //结果集的id字符串 echo $id;
结果展示:

测试用例2。符合搜索关键词高亮
<?php
# 如果php中安装了sphinx.dll拓展,则不需要这一行代码
require('sphinxapi.php'); $keyword = 'test';
$sphinx = new SphinxClient();
$sphinx->SetServer('localhost',);
$sphinx->setMatchMode(SPH_MATCH_ANY);//匹配模式 SPH_MATCH_ALL:完全匹配
$result = $sphinx->query($keyword,'*');//*表示在所有索引里面进行搜索
$ids = implode(',',array_keys($result['matches'])); $conn = mysqli_connect('localhost','root','');
mysqli_query($conn,'set names utf8');
mysqli_select_db($conn,'test'); $sql = "select * from documents where id in (".$ids.")";
$rst = mysqli_query($conn,$sql);
//给匹配关键字添加样式
$opts = array(
'before_match'=>'<font style="font-weight:bold;color:#f00;">',
'after_match'=>'</font>'
);
echo '<pre>';
while($row = mysqli_fetch_assoc($rst)){
$row2 = $sphinx->buildExcerpts($row,'test1',$keyword,$opts);//test1 配置文件中的主数据源索引
print_r($row2);
}
结果展示

用定时任务,自动更新索引,可以参考网址:http://v9.help.phpcms.cn/html/2010/search_0919/35.html
PHP搜索优化 sphinx 搭建测试的更多相关文章
- PHP搜索优化 sphinx 实战
环境:win7 64 wamp 解压sphinx安装包后,简历如下结构.注意,conf目录是我的配置文件目录 在conf目录下,简历newdefend.conf文件,配置内容如下 # 配置数据源 so ...
- 02.基于IDEA+Spring+Maven搭建测试项目--详细过程
一.背景介绍 1.1公司相关技术 Git:是一款免费的开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,方便多人集成开发 Maven:是基于项目对象模型(POM),可以通过一小段描述信息 ...
- 在Linux上搭建测试环境常用命令(转自-测试小柚子)
一.搭建测试环境: 二.查看应用日志: (1)vivi/vim 原本是指修改文件,同时可以使用vi 日志文件名,打开日志文件(2)lessless命令是查看日志最常用的命令.用法:less 日志文件名 ...
- Linux常用命令及搭建测试环境
题外话:三大操作系统------Linux.Unix.Windows,Unix系统如常见的Mac OS,Linux的很多命令跟Unix是通用的,所以就有一些开发人猿喜欢用苹果的原因.Linux发行版特 ...
- python学习之正则表达式,StringIO模块,异常处理,搭建测试环境
python正则表达式 引入一个强大的匹配功能来匹配字符串 import re 正则表达式的表示类型raw string类型(原生字符串类型) r'sa\\/sad/asd'用r转为raw strin ...
- seo搜索优化教程09 - seo搜索优化外链优化
为了使大家更方便的了解及学习网络营销推广.seo搜索优化,星辉科技强势推出seo搜索优化教程.此为seo教程第九课 网络营销推广中有句行话,叫做"内容为王,外链为王",可见外链对于 ...
- Nginx配置性能优化与压力测试webbench【转】
这一篇我们来说Nginx配置性能优化与压力测试webbench. 基本的 (优化过的)配置 我们将修改的唯一文件是nginx.conf,其中包含Nginx不同模块的所有设置.你应该能够在服务器的/et ...
- MFC程序使用GTest搭建测试框架
一.起源 最近对单元测试比较感兴趣,之后就上网搜了一些测试的框架,C++项目使用的测试框架基本上都使用的GoogleTest,之后就开启了gtest的学习之路. 主要是根据<玩转Google开源 ...
- LVS+keepalived快速搭建测试环境
#LVS+keepalived快速搭建测试环境 #LVS+keepalived快速搭建测试环境 #centos6 X64 # LVS 负载均衡模式:DR(直接路由) 192.168.18.31 mas ...
随机推荐
- (转) Vultr能Ping但是SSH无法连接
原文链接:https://www.bestqliang.com/2018/06/27/Vultr%E8%83%BDPing%E4%BD%86%E6%98%AFSSH%E6%97%A0%E6%B3%95 ...
- 学习 debug
要在代码编辑器中设置源代码断点,有以下 4 种操作方式. (1) 把光标移到要设为断点的行上,按下 F5 键. (2) 用鼠标左键单击要设为断点的行的最左端. (3) 用鼠标右键单击要设为断点的行,在 ...
- about how to determine a prime number
(1) if divided by 2 or 3, then no; (2) we only have to go through prime factors; because a composite ...
- Mac 下搭建vue开发环境
tips:一定要有翻墙工具如lanter,另外要保证网速OK. 1. 首先需要安装homebrew liukingdeMBP:~ liuking$ /usr/bin/ruby -e "$(c ...
- System.Web.Mvc.JsonResult.cs
ylbtech-System.Web.Mvc.JsonResult.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicK ...
- SpringBoot学习笔记(一):SpringBoot简介
SpringBoot为什么这么火? 为什么学习SpringBoot?总的来说就是简单. 使用SpringBoot免除了很多配置文件,越来越容易上手. 更轻量级的Web开发,免除了我们以前的server ...
- python 虚拟环境virtualenv搭建
一.安装虚拟环境 pip install virtualenv -i https://pypi.douban.com/simple 用国内镜像,速度更快 二.创建虚拟目录 在需要存放软件工程的 ...
- 05-3-style标签属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- springcloud 使用RabbitMq
新建一个项目,三个module 分别为eureka-server,config-server,config-client, eureka-server 的pom.xml, <?xml versi ...
- JZOJ5894【NOIP2018模拟10.5】同余方程
题目 Description