LNMP+sphinx实现大数据秒查

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。


Sphinx的特性如下:

a)  高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);

b)  高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);

c)  可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可处理100 M 文档);

d)  提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;

e)  支持分布式搜索;

f)  支持短语搜索

g)  提供文档摘要生成

h)  可作为MySQL的存储引擎提供搜索服务;

i)  支持布尔、短语、词语相似度等多种检索模式;

j)  文档支持多个全文检索字段(最大不超过32个);

k)  文档支持多个额外的属性信息(例如:分组信息,时间戳等);

l)  支持断词;


虽然mysql的MYISAM提供全文索引,但是性能却不敢让人恭维,另外数据库毕竟不是很善于做这样的事情,我们需要把这些活让给更适合的程序去做,减少数据库的压力。因此采用Sphinx来做mysql的全文索引工具是一个很好的选择。这个星期主要来学习这个这个工具的使用,下面将学习过程大致的记录一下,做个备忘,也希望能对学习这个工具的其他朋友有所启发。


  1. 安装sphinx

1
2
3
4
5
6
7
8
9
wget http: //sphinxsearch .com /files/sphinx-2 .2.11-release. tar .gz
tar  -xf sphinx-2.2.11-release. tar .gz  &&  cd  sphinx-2.2.11-release
. /configure   --prefix= /usr/local/spinx  --with-mysql
make  &&  make  install
ln  -s  /usr/local/mysql/lib/libmysqlclient .so.18  /usr/lib64/
libsphinxclient 安装(PHP模块需要)
cd  api /libsphinxclient
. /configure  –prefix= /usr/local/sphinx
make  &&   make  install

2.安装php扩展

1
2
3
4
wget http: //pecl .php.net /get/sphinx-1 .3.0.tgz
tar  zxf sphinx-1.3.3.tgz &&  cd  sphinx-1.3.3
. /configure  --with-php-config= /usr/local/php/bin/php-config  --with-sphinx= /usr/local/sphinx/
make  &&   make  install


3.创建配置文件

1
cp  /usr/local/sphinx/etc/sphinx-min .conf.dist   /usr/local/sphinx/etc/sphinx .conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
 
source  src1
{
         type                     = mysql
 
         sql_host                = localhost
         sql_user                = root
         sql_pass                = www.123
         sql_db                  =  test
         sql_port                = 3306   # optional, default is 3306
 
         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/spinx/var/data/test1
}
 
 
indexer
{
         mem_limit               = 32M
}
 
 
searchd
{
         listen                  = 9312
         listen                  = 9306:mysql41
         log                     =  /usr/local/spinx/var/log/searchd .log
         query_log               =  /usr/local/spinx/var/log/query .log
         read_timeout            = 5
         max_children            = 30
         pid_file                =  /usr/local/spinx/var/log/searchd .pid
         seamless_rotate         = 1
         preopen_indexes         = 1
         unlink_old              = 1
         workers                 = threads  # for RT to work
         binlog_path             =  /usr/local/spinx/var/data
}


4.创建索引并启动

1
2
/usr/local/spinx/bin/indexer   -c  /usr/local/spinx/etc/sphinx .conf --all
/usr/local/spinx/bin/searchd   -c  /usr/local/spinx/etc/sphinx .conf

5.查询验证

1
2
3
4
5
6
7
8
9
10
cd  /root/sphinx-2 .2.11-release /api
python  test .py   test
DEPRECATED: Do not call this method or, even better, use SphinxQL instead of an API
Query  'test '  retrieved 3 of 3 matches  in  0.000 sec
Query stats:
         'test'  found 5  times  in  3 documents
Matches:
1. doc_id=1, weight=2, group_id=1, date_added=2016-11-30 01:21:20
2. doc_id=2, weight=2, group_id=1, date_added=2016-11-30 01:21:20
3. doc_id=4, weight=1, group_id=2, date_added=2016-11-30 01:21:20


1
2
3
4
5
6
7
8
9
mysql>  select  * from documents;
+----+----------+-----------+---------------------+-----------------+---------------------------------------------------------------------------+
id  | group_id | group_id2 | date_added          | title           | content                                                                   |
+----+----------+-----------+---------------------+-----------------+---------------------------------------------------------------------------+
|  1 |        1 |         5 | 2016-11-30 01:21:20 |  test  one        | this is my  test  document number one. also checking search within phrases. |
|  2 |        1 |         6 | 2016-11-30 01:21:20 |  test  two        | this is my  test  document number two                                       |
|  3 |        2 |         7 | 2016-11-30 01:21:20 | another doc     | this is another group                                                     |
|  4 |        2 |         8 | 2016-11-30 01:21:20 | doc number four | this is to  test  groups                                                     |
+----+----------+-----------+---------------------+-----------------+--------------------



本文转自 shouhou2581314 51CTO博客,原文链接:http://blog.51cto.com/thedream/1878194,如需转载请自行联系原作者
相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
SQL 分布式计算 Hadoop
最新大数据集群安装方法CentOS7.6__大数据环境安装和配置
最新大数据集群安装方法CentOS7.6__大数据环境安装和配置
95 0
|
5月前
|
大数据 Java Linux
大数据Nifi环境搭建
大数据Nifi环境搭建
88 0
|
8月前
|
SQL 分布式计算 NoSQL
大数据相关常用软件下载地址集锦
大数据相关常用软件下载地址集锦
|
机器学习/深度学习 分布式计算 并行计算
Python处理大数据,推荐4款加速神器
Python处理大数据,推荐4款加速神器
Python处理大数据,推荐4款加速神器
|
存储 大数据 Linux
|
大数据 Linux 虚拟化
|
数据库 容器
Zabbix5.0安装部署,史上最详细,快收藏起来吧~~
Zabbix5.0安装部署,史上最详细,快收藏起来吧~~
975 1
Zabbix5.0安装部署,史上最详细,快收藏起来吧~~
|
存储 关系型数据库 MySQL
ARM+麒麟大数据环境搭建:MySQL8
ARM+麒麟大数据环境搭建:MySQL8
1145 0
ARM+麒麟大数据环境搭建:MySQL8
|
Oracle Java 关系型数据库
大数据集群安装手册之服务安装篇
在大数据集群的安装前准备工作完成后,就可以开始正式安装服务了。Centos7下,HDP(ambari)集群的服务安装篇
|
SQL 关系型数据库 MySQL
MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!
MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!
1742 0
MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!