zoukankan      html  css  js  c++  java
  • php_sphinx安装使用

    Sphinx的简介:

    Sphinx是一个独立的全文索引引擎,意图为其他应用提供高速低空间

    占用、搜索结果高相关度全文搜索功能。Sphinx可以非常容易的与

    SQL数据库和脚本语言集成。内置MySQL和PostgreSQL数据库数据源

    的支持。搜索API支持PHP、Python、Perl、Rudy和Java。

    Sphinx的使用背景:在mysql中优化的时候,对varchar,char,text对这些数据进行查询时,如果我们使用like ‘%单词’,是无法使用到索引,如果网站的数据量比较大,会拖垮网站的速度。

    Sphinx的原理:

    先对数据源建立索引。采用分词技术,形成一个索引表。当查询某个单词的时候,先到sphinx建立的索引去查找,然后再去数据库用id查找。

    Windows 安装sphinx的过程:

    下载完后解压后,把etc目录下面,把mysql的模板配置文件csft_mysql.conf拷贝到上级目录,并修改为sphinx.conf。然后对其配置数据源,模板里面都有详细注释。

    然后去bin目录根据配置好的文件生成生成索引文件:

    命令:

    Indexer.exe -c sphinx.conf -all   // --all:为配置文件中所有的索引创建索引文件

    执行sphinx下的一个程序indexer.exe –c配置文件 –all | 索引的名字

    Indexer.exe -c sphinx.conf 索引的名字(sphinx.conf里面配置的)

    安装启动sphinx:

    语法:

    searchd.exe –c 配置文件 --install

    该命令对应的参数:

    searchd开启服务端

    searchd -c 配置文件 索引名称

    服务器端默认监听 9312 端口。常用命令:

    -c : 指定配置文件路径

    --stop : 停止当前服务

    --status : 查看当前状态

    --install : 安装为 windows 服务

    --delete: 删除windows服务

    --port  port: 监听的端口

    --index  indexName : 只查询某个索引,默认查询所有索引

    服务启动后,去services.msc 启动 searchd ,验证的话查看端口 netstat -an  看看是否有9312开启

    代码实现:

    <?php

    require('sphinxapi.php'); // 这个文件在sphinx的api目录里

    $sc = new SphinxClient(); // 生成客户端

    $sc->setServer('localhost',9312); // 设置服务器

    $res = $sc->query('武侠',’ mysql’); // 第一个参数是查询内容,第二个参数是索引的名称(sphinx.conf里面配置)

    $ids = implode(",",array_keys($res['matches']));

    $conn = mysqli_connect("localhost","root","root","test");

    mysqli_query($conn,"set names utf8");

    $sql = "select * from test where id in($ids)";

    $res = mysqli_query($conn,$sql);

    $list = array();

    while($row = mysqli_fetch_assoc($res)){

           $list[] = $row;

    }

    mysqli_free_result($res);

    mysqli_close($conn);

    foreach($list as $v){

           echo $v['name'].'<br/>'.$v['desc'].'<hr>';

    }

    天龙八部
    一部非常好看的武侠电视剧


    射雕英雄传
    另一部非常好看的武侠电视剧


    侠客行
    也是非常好看的武侠电视剧

  • 相关阅读:
    Error Code: 1414. OUT or INOUT argument 2 for routine company.new_procedure is not a variable or NEW
    Linux四个常用的指挥机关处理具体的解释
    JTextpane 加入的行号
    Oracle主键(Primary Key)使用详细的说明
    POJ 3904(容斥原理)
    [Angular] AuthService and AngularFire integration
    [React] Close the menu component when click outside the menu
    [D3] SVG Graphics Containers and Text Elements in D3 v4
    [D3] Start Visualizing Data Driven Documents with D3 v4
    [Angular] Setup automated deployment with Angular, Travis and Firebase
  • 原文地址:https://www.cnblogs.com/lzy007/p/7642906.html
Copyright © 2011-2022 走看看