码迷,mamicode.com
首页 > Web开发 > 详细

PHP搜索优化 sphinx

时间:2018-04-23 18:35:15      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:time   测试用例   自己   child   localhost   bat   pat   arc   value   

安装。环境: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/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", 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

标签:time   测试用例   自己   child   localhost   bat   pat   arc   value   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!