首页
文章
留言
首页
文章
留言
Sphinx使用总结
2017 年 02 月 05 日
后端
架构
Sphinx
Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx 特别为一些脚本语言设计搜索 API 接口,如Java、PHP、Python、Perl、Ruby 等,同时为 MySQL 也设计了一个存储引擎插件。 Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx 创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。 Sphinx的主要特性包括: > 高速索引(在新款 CPU 上,近10 MB/秒。 > 高速搜索 (2-4G的文本量中平均查询速度不到0.1秒)。 > 高可用性(单 CPU 上最大可支持100 GB的文本,100M文档)。 > 提供良好的相关性排名 支持分布式搜索。 > 提供文档摘要生成。 > 提供从 MySQL 内部的插件式存储引擎上搜索。 > 支持布尔、短语和近义词查询。 > 支持每个文档多个全文检索域(默认最大32个)。 > 支持每个文档多属性。 > 支持断词。 > 支持单字节编码与 UTF-8 编码。 ### 在 MySQL 中安装 Sphinx Sphinx 在 MySQL 上安装有两种方式: #### 第一种: 是采用 API 调用,我们可以使用 PHP、Python、Perl、Ruby 等编程语言的 API 函数进行查询,这种方式不必重新编译 MySQL,模块间改动比较少,相对灵活。下载地址:http://www.sphinxsearch.com/downloads/ #### 第二种: 需要重新编译 MySQL,将 Sphinx 以插件的方式编译到 MySQL 中去,这种方式对程序改动比较少,仅仅需要改动 SQL 语句即可,但前提是你的 MySQL 版本必须在5.1以上。 ##### Sphinx 中文分词插件 Coreseek 安装 注:coreseek的安装教程来自这里,下面是详细过程: ##### 安装升级 autoconf 因为 coreseek 需要 autoconf 2.64以上版本,因此需要升级 autoconf,不然会报错。 ##### 下载 coreseek 新版本的 coreseek 将词典和 sphinx 源程序放在了一个包中,因此只需要下载 coreseek 包就可以了。 ```bash wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz ``` ##### 安装 mmseg(coreseek 所使用的词典) ```bash tar xzvf coreseek-3.2.14.tar.gz cd mmseg-3.2.14 ./bootstrap #输出的 warning 信息可以忽略,如果出现 error 则需要解决 ./configure --prefix=/usr/local/mmseg3 make && make install ``` ##### 安装 coreseek(sphinx) ```bash cd csft-3.2.14 sh buildconf.sh #输出的 warning 信息可以忽略,如果出现 error 则需要解决 ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql make && make install ``` ##### 测试 mmseg 分词和 coreseek 搜索 备注:需要预先设置好字符集为 zh_CN.UTF-8,确保正确显示中文,我的系统字符集为 en_US.UTF-8 也是可以的。 ```bash cd testpack cat var/test/test.xml /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml /usr/local/coreseek/bin/indexer -c etc/csft.conf --all /usr/local/coreseek/bin/search -c etc/csft.conf make && make install ``` 此时正确的应该返回: ```plaintext words: 1. '网络': 1 documents, 1 hits 2. '搜索': 2 documents, 5 hits ``` 生成 mmseg 词库及配置文件。 新版本的已经自动生成。
0
相关文章
Redis缓存击穿、穿透、雪崩
OpenResty+Lua+Kafka收集日志
Elasticsearch详解
Kafka使用总结
Kubernetes介绍
全部分类
前端
后端
运维
架构
算法
数据库
移动应用
桌面应用
程序开发
热门标签
iOS
MongoDB
Elasticsearch
Supervisor
Objective-C
Nginx
Git
Kubernetes
PHP
Sphinx
Shell
JavaScript
GUI
C++
Qt
Docker
Python
macOS
Composer
Android
Lua
爬虫
NoSQL
OpenResty
CSS
Kafka
Redis
HTML
多线程
MySQL
Linux
CentOS
热门文章
Kubernetes介绍
macOS常用命令
Supervisor使用总结
10种常见的软件架构模式
OpenResty+Lua+Kafka收集日志
C/C++基础知识总结
Docker使用总结
Git使用总结
Elasticsearch详解
Nginx常用配置说明