分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

PHP搜索优化 sphinx

发布时间:2023-09-06 01:50责任编辑:苏小强关键词:PHP

安装。环境: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 ???????= 3306 ???????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 ???= 0}source src1throttled : src1{ ???sql_ranged_throttle ???= 100}# 配置数据源生成的索引文件存放的位置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 ???????????= 0 ???morphology ???????= none ???min_word_len ???= 1 ???ngram_len ???????= 1 ???ngram_chars ???????= U+3000..U+2FA1F ???html_strip ???????= 0} indexer{ ???mem_limit ???????= 128M}# 配置Sphinx服务器的信息searchd{ ???listen ???????????= 9312 ???listen ???????????= 9306:mysql41 ???log ???????????????= D:/sphinx/log/searchd.log ???query_log ???????= D:/sphinx/log/query.log ???read_timeout ???????= 5 ???client_timeout ???????= 300 ???max_children ???????= 30 ???persistent_connections_limit ???= 30 ???pid_file ???????????= D:/sphinx/log/searchd.pid ???preopen_indexes ???????= 1 ???unlink_old ???????????= 1 ???mva_updates_pool ???= 1M ???max_packet_size ???????= 8M ???max_filters ???????????= 256 ???max_filter_values ???= 4096 ???max_batch_queries ???= 32 ???workers ???????????????= threads 
  # windows下启动searchd服务一定要注释掉这个
  # seamless_rotate  = 1
}

4、建立索引

indexer.exe test1

5、启动服务

searchd.exe --pidfile

或者

searchd

也可以制作成.bat文件,方便快速启动。新建文件“测试.bat”,用文本编辑器打开,写入如下内容。可以根据自己环境,自行修改。双击即可启动sphinx

@echo off d: cd\sphinx/binsearchd

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", 9312);$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=0;$i<$count;$i++){ ???$id.=$arr[$i][‘id‘].‘,‘;}$id=substr($id,0,-1); ???????????//结果集的id字符串echo $id;

结果展示:

测试用例2。符合搜索关键词高亮

<?php# 如果php中安装了sphinx.dll拓展,则不需要这一行代码
 require(‘sphinxapi.php‘);$keyword = ‘test‘;$sphinx = new SphinxClient();$sphinx->SetServer(‘localhost‘,9312);$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);}

 结果展示

PHP搜索优化 sphinx

原文地址:https://www.cnblogs.com/qq917937712/p/8920506.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved