Sphinx 优点

  • 高速索引(接近10M/S)
  • 高速搜索(2-4G文本搜索耗时不到0.1秒)
  • 高可用性(单CPU支持100GB文本,100M文档)
  • 提供相关性排名、分布式搜索、文档摘要(高亮显示)

Sphinx 缺点

  • 必须有主键
  • 主键必须是整形
  • 不负责数据存储
  • 配置复杂

Sphinx是介于PHP和mysql的中间层,它提供比mysql更专业的搜索功能,性能更高,因为存在于mysql之前,可以更好的缓解数据库压力

安装

sudo apt-get install sphinxsearch -y

安装完成后在 / etc / sphinxsearch / 目录下有以下4个文件

example.sql 数据源,用于测试

sphinx.conf.dist 完整的配置,包含全部配置

sphinx.conf.sample 配置参考

sphinx-min.conf.dist  精简配置,包含主要配置


我们来看看 sphinx-min.conf.dist 中的配置项

拷贝sphinx-min.conf.dist 到当前目录下 sphinx.conf

源配置:

source src1
{
type = mysql sql_host = localhost
sql_user = test
sql_pass =
sql_db = test
sql_port = # optional, default is 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
}

块包含源代码,用户名和密码到MySQL服务器的类型。 所述的第一列sql_query应该是唯一的ID。 SQL查询将在每个索引上运行,并将数据转储到Sphinx索引文件。 下面是每个字段和源块本身的描述。

  • type :数据源索引的类型。 在我们的例子,这是MySQL。 其他支持的类型包括pgsql,mssql,xmlpipe2,odbc等。
  • sql_host :主机名MySQL的主机。 在我们的例子,这是localhost 。 这可以是域或IP地址。
  • sql_user :数据库用户名
  • sql_pass :密码
  • sql_db :存储数据的数据库的名称
  • sql_query :查询从数据库到索引那转储数据。

索引配置:

index test1
{
source = src1
path = /var/lib/sphinxsearch/data/test1
}
  • source :源块的名称。 在我们的例子,这是src1的 。
  • path :路径保存索引。

端口和常量配置:

searchd
{
listen =
listen = :mysql41
log = /var/lib/sphinxsearch/log/searchd.log
query_log = /var/lib/sphinxsearch/log/query.log
read_timeout =
max_children =
pid_file = /var/run/sphinxsearch/searchd.pid
seamless_rotate =
preopen_indexes =
unlink_old =
workers = threads # for RT to work
binlog_path = /var/lib/sphinxsearch/data
}

searchd的组件包含端口和其他变量来运行Sphinx守护进程。

  • listen :这Sphinx守护进程运行的端口,后面的协议。 在我们的例子,这是9306:mysql41。 已知的协议是:Sphinx (SphinxAPI)和:mysql41(SphinxQL)
  • query_log :路径保存查询日志
  • pid_file :到Sphinx守护进程的PID文件的路径。
  • seamless_rotate :同时旋转海量数据预缓存的指标,防止searchd的摊位。
  • preopen_indexes :是否强行盘前在启动时的所有索引。
  • unlink_old :是否删除成功旋转旧的索引拷贝。

管理索引

将数据添加到Sphinx索引

sudo indexer --all
Sphinx 2.2.9-id64-release (rel22-r5006)
Copyright (c) 2001-2015, Andrew Aksyonoff
Copyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com) using config file '/etc/sphinxsearch/sphinx.conf'...
indexing index 'test1'...
collected 4 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 4 docs, 193 bytes
total 0.032 sec, 5922 bytes/sec, 122.75 docs/sec
skipping non-plain index 'testrt'...
total 4 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg
total 12 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg

表示创建索引成功

在生产环境中,有必要保持索引为最新。 为了做到这一点,让我们创建一个cronjob。 首先,打开crontab

crontab -e

可能会询问您要使用哪个文本编辑器。 选择你喜欢的; 在本教程中,我们使用nano 。

随后的cronjob将每小时运行一次,并使用我们之前创建的配置文件向索引添加新数据。 将其复制并粘贴到文件末尾,然后保存并关闭文件

@hourly /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all

现在Sphinx已经完全设置和配置,我们可以启动服务并尝试


启动 sphinx

默认情况下,Sphinx守护程序关闭。 首先,我们将改变这一行启用START=noSTART=yes/etc/default/sphinxsearch

sudo sed -i 's/START=no/START=yes/g' /etc/default/sphinxsearch

然后,使用systemctl重启Sphinx守护进程

sudo systemctl restart sphinxsearch.service

要检查Sphinx守护程序是否正确运行,请运行

sudo systemctl status sphinxsearch.service


测试

现在,一切都设置好了,让我们测试搜索功能。 使用MySQL接口连接到SphinxQL(在端口9306上)。 您提示将改变为mysql>

mysql -h0 -P9306

搜索:test1 代表sphinx配置文件中索引名称  match(搜索条件)

select * from test1 where match('another');

测试关键字

CALL KEYWORDS ('test one three', 'test1', 1);

输出:

+------+-----------+------------+------+------+
| qpos | tokenized | normalized | docs | hits |
+------+-----------+------------+------+------+
| 1 | test | test | 3 | 5 |
| 2 | one | one | 1 | 2 |
| 3 | three | three | 0 | 0 |
+------+-----------+------------+------+------+
3 rows in set (0.00 sec)

在结果上面可以看到,在test1的指数,Sphinx发现:

  • 5个匹配在3个文档中的关键字'test'
  • 2在1个文档中匹配关键字“1”
  • 0匹配0个文档中的关键字'three'

Sphinx 安装与使用的更多相关文章

  1. Linux Sphinx 安装与使用

    一.什么是 Sphinx? Sphinx 是一个基于SQL的全文检索引擎,可以结合 MySQL,PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序 更容易实现专业化 ...

  2. sphinx 安装使用

    一.linux(centos)下安装源码包 1.下载  wget http://sphinxsearch.com/files/sphinx-2.3.1-beta.tar.gz 2.安装   切换目录到 ...

  3. Sphinx安装配置应用

    Sphinx 是由俄罗斯人Andrew Aksyonoff开发的一个全文搜索引擎.意图为其他应用提供高速.地空间占用.高结果相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成 ...

  4. sphinx安装记录 转

    [转]sphinx服务器安装及配置详解 安装PHP sphinx扩展 1.架构:ip192.168.0.200 redhat5.4(64位)2.安装   #cd /usr/local/src   #y ...

  5. ubuntu下 mysql5.6.4 +sphinx安装

    安装mysql 5.6.4 下载源码 安装cmake sudo apt-get install cmake 进入mysql源码包: 创建mysql用户与用户组 groupadd mysql usera ...

  6. coreseek(sphinx)安装1(xml数据源配置和测试)

    1.下载coreseek-3.2.14-32版本.网址:http://www.coreseek.cn/products-install/install_on_windows/   (有详细的安装说明) ...

  7. CoreSeek Sphinx 安装

    1.centos Sphinx 先安装 yum install postgresql-libs yum install unixODBC CoreSeek 安装: http://www.coresee ...

  8. Sphinx安装流程及配合PHP使用经验

    1.什么是Sphinx Sphinx是俄罗斯人Andrew Aksyonoff开发的高性能全文搜索软件包,在GPL与商业协议双许可协议下发行. 全文检索式指以文档的全部文本信息作为检索对象的一种信息检 ...

  9. Sphinx 安装与使用(1)-- 安装Coreseek

    Coreseek就是Sphinx的中文版 官方网站 http://www.coreseek.cn/ 一.安装 1.修改LANG 永久修改: vim /etc/locale.conf LANG=&quo ...

随机推荐

  1. Alpha冲刺7

    前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10013652.html 作业博客:https://edu.cnblogs.com/campus ...

  2. c++结构体的排序

    出处:https://blog.csdn.net/weixin_39460667/article/details/82695190 引入头文件 #include<algorithm> 结构 ...

  3. [IntelliJ IDEA入门] 新建一个Java项目

    新建一个Project 是否有JDK配置 选择JavaEE 点击Next 项目路径和文件 .idea (directory based) 创建项目的时候自动创建一个 .idea 的项目配置目录来保存项 ...

  4. vim语法

    在任何目录输入命令“vim <文件名>”就可以使用vim编辑文件了. 打开vim后,默认的是命令模式,输入i进入编辑模式,这个时候你可以编辑文件了.在编辑模式下按Esc键回到命令模式,在命 ...

  5. sublime text 使用小技巧

    sublime下载各个版本 官网 插件官方网站地址 https://packagecontrol.io/ 一.安装设置字体及字体大小 1.点菜单“Preferences--->Setting - ...

  6. SQLite相关异常

    SQLite的异常大多都和异常IO操作有关,这类异常通常在debug测试的时候难以发现通常和用户的操作有关系,根据我遇到的包括以下几种: 1.No transaction is active 这种情况 ...

  7. tomcat 启动脚本走过的坑

    最近由于 程序写的问题 tomcat经常需要重启,所以就让我写给监控tomcat并启动的脚本 例: 看着一起正常 然后就写到 crontab 计划任务里了 后来发现不管用, 找了好多文档 就是找不到问 ...

  8. Python全栈之路----函数----局部变量

    全局变量是定义在函数外部以及代码的变量,全局能用. 局部变量就是定义在函数里的变量,只能在局部生效. 在函数内部,可以引用全局变量. 如果全局和局部都有一个名字相同的变量,在函数内会优先调用函数内的局 ...

  9. 安装MySQL Connector/C++并将其配置到VS2015中

    安装MySQL Connector/C++并将其配置到VS中 1.下载MySQL Connector/C++并安装 在下载地址:https://dev.mysql.com/downloads/conn ...

  10. some learning

    一.windows下迁移access到mysql Windows下 Access 数据 迁移到 Mysql(5.5)数据库 . 具体做法 . 在access的表中选择,文件->导出->保存 ...