sphinx3.1.1的安装与使用

  1. 下载sphinx3.1.1

    • wget http://sphinxsearch.com/files/sphinx-3.1.1-612d99f-linux-amd64.tar.gz
  2. 解压 
    • tar zxf sphinx-3.1.1-612d99f-linux-amd64.tar.gz
  3. 改名 sphinx 并移动到 /usr/local/
    • mv sphinx-3.1.1 sphinx
    • mv sphinx /usr/local/
  4. 到sphinx目录下创建 data,log文件夹
    • cd /usr/local/sphinx
    • mkdir data && mkdir log
  5. 在/usr/local/sphinx/etc 编写 sphinx.conf 配置文件
    • vim /usr/local/sphinx/etc/sphinx.conf
    • #
      # Minimal Sphinx configuration sample (clean, simple, functional)
      # source src1
      {
      type = mysql
      sql_host = localhost
      sql_user = root
      sql_pass = root
      sql_db = test
      sql_port = # optional, default is
      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
      } index test1
      {
      source = src1
      path = /usr/local/sphinx/data/test1
      min_word_len =
      ngram_len =
      ngram_chars = U+..U+2FA1F
      } indexer
      {
      mem_limit = 128M
      } searchd
      {
      listen =
      listen = :mysql41
      log = /usr/local/sphinx/log/searchd.log
      query_log = /usr/local/sphinx/log/query.log
      read_timeout =
      max_children =
      pid_file = /usr/local/sphinx/log/searchd.pid
      seamless_rotate =
      preopen_indexes =
      unlink_old =
      binlog_path = /usr/local/sphinx/data/
      }
  6. 在test数据库中 运行/usr/local/sphinx/etc目录下的example.sql文件
    • 进入mysql
    • use test;
    • source /usr/local/sphinx/etc/example.sql
  7. 添加索引
    • /usr/local/sphinx/bin/indexer -c  /usr/local/sphinx/etc/sphinx.conf test1
    • /usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf test1 --rotate  // 重新生成索引命令
  8. 运行sphinx
    • /usr/local/sphinx/bin/searchd -c  /usr/local/sphinx/etc/sphinx.conf
    • /usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf --stop  //停止sphinx命令

  9. php操作sphinx
    • 复制/usr/local/sphinx/api/ 目录下的 sphinxapi.php
    • $sphinx = new SphinxClient();
      $q = $_GET['key'] ?? 'test'; //搜索关键字
      // 3.1已经弃用了setMatchMode!直接写查询语法就可以
      // 如果要匹配字符串中任意一个词或字使用如下写法
      // '"string1" | "string2" | "string3"' // '@(title,content) string' @括号中的是要搜索的字段 可以写多个或单个 // '^$string$' 表示全部匹配 类似mysql中的 fieldName = 'string'
      // 更多用法可以参考正则表达式或者官方文档 // 中文分词扩展建议使用scws,官网安装和使用教程说明很详细,(不过sphinx自带的一元分词已经够用了,一般不需要scws
      //http://www.xunsearch.com/scws/
      $sql = "";
      $host = "127.0.0.1";
      $port = 9312;
      $index = "test1";
      $sphinx->SetServer($host, $port);
      $sphinx->SetConnectTimeout(10);
      $sphinx->SetArrayResult(true);
      $res = $sphinx->Query($q, $index);
      print_r($res);

      运行结果如下:

结束,记得数据库数据改变后需重新生成索引

最新文章

  1. 用javascript比较快速排序和合并排序的优劣
  2. 可以编辑R代码的eclipse插件
  3. 微信开发系列----02:实现POST请求响应
  4. JSTL&EL(程序员必看之一)
  5. WPF之旅(一)- 概述
  6. [Angular 2] Create a simple search Pipe
  7. C# WinForm判断Win7下是否是管理员身份运行
  8. python字符串,列表,字符串,元组,集合的一些方法
  9. sed 变量替换和Linux的特殊符号大全
  10. Spring Boot 2.x(十一):AOP实战--打印接口日志
  11. 容器的注入和container设计的思想——Injection Container 理解
  12. couldn't locate lint-gradle-api-26.1.2.jar for flutter project
  13. dos基本指令
  14. 一天掌握python爬虫
  15. 解决Address is in use:Windows和Linux通过杀死进程
  16. 洛谷P3366最小生成树
  17. [leetcode tree]101. Symmetric Tree
  18. 页面的缓存设置与meta的作用详细解释
  19. u3d图片转视频
  20. Ubuntu 字体设置:使用Windows 字体

热门文章

  1. Spring boot Sample 003之spring-boot-configuration-properties
  2. jchdl - GSL实例 - MulC2(有符号数的乘法)
  3. vim的常见操作
  4. Java实现 LeetCode 795 区间子数组个数 (暴力分析)
  5. Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)
  6. (Java实现) 均分纸牌
  7. Java实现 LeetCode 386 字典序排数
  8. Java实现 LeetCode 168 Excel表列名称
  9. Java实现 LeetCode 125 验证回文串
  10. python3 驱动自动安装脚本