服务器架构之性能扩展-第八章(9)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

 

第八章:Sphinx全文检索

8.1 检索简介

生活中总会和数据打交道,数据一般分为结构化数据(具有自动固定格式或有限长度数据)和非结构化数据,非结构化数据又称全文数据。

全文索引的扫描大致分为索引的创建和搜索索引两个过程。

索引创建:将现实世界的所有结构化数据和非结构化数据提取信息,建立索引的过程。

索引搜索:就是得到用户的查询请求,搜索创建的索引,返回结果的过程。

创建索引具体过程:

1、          首先创建需要索引的文档

2、          将源文档传给分词词组(tokenizer)。分词词组会将文档分成一个一个的单独单词,去掉标点,去掉停词(的,这等)

3、          将的得到的词元(token)传给语言处理组件(linguistic processor)。它主要进行单词变为小写,复数改为单数(cars->car,过去式转给原始等。

4、          将得到的词(term)传给索引组件(indexer)。它进行创建一个字典,并按字母排序。

索引搜索具体过程:

1、          用户输入查询语句

2、          对查询语句进行语法分析,语言处理

3、          搜索索引,得到合法树的文档

4、          根据得到的文档和查询语句的相关性,进行排序

8.2sphinx入门

SphinxSQL phrase index(查询词组索引)的缩写,sphinx是一个基于SQL的全文检索引擎。Coreseek是支持中文的全文检索引擎。

用处:当数据的量增大对搜索有更高要求时;当用户放映搜索慢时;当需要设计千万级亿级别的架构时

Sphinx优点:检索速度快,对于2-4G数据只要0.1秒,提供分布式搜索,可以为mysql提供检索,支持多个检索字段

缺点:必须有主键,主键为整形,不负责数据存储,配置不灵活

Sphinx全文索引工作在phpmysql之间,完成数据的检索。

8.3 sphinx的部署

8.3.1 sphinx的安装

Wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz

Tar zxvf sphinx-0.9.9.tar.gz

Cd sphinx-0.9.9

./configure –prefix=/usr/local/sphinx –with-mysql=/usr/local/mysql

Make && make install

这时在sphinx/bin目录下会有三个命令。Indexer:创建索引;seachd:启动进程;seach:搜索命令。

我们创建一个主键为整形的表,添加数据。

8.3.2 配置sphinx

安装完毕会在sphinx/etc目录下生成一个sphinx.conf.disk的示例配置,修改即可。这个配置文件包括朱数据源文件,增量数据文件,主索引,增量索引,所引器和服务进程组成的。

1、主数据源是源数据,后期添加数据为增量数据源

Source src1改为source main作为主数据源,然后配置数据库信息

指定socket位置

设置mysql字符集,关闭缓存

指定数据sql语句

注释掉这些默认的信息

更改查询的数据库

注释主数据索引

指定字符集

注释增量索引。

494525s/^/#/g   //批量注释分布式索引

索引器设置内存,默认32MB

服务器进程设置端口,默认即可

8.3.3测试

/usr/local/sphinx/bin/bin/indexer –c /usr/local/sphinx/etc/sphinx.conf –all

-c 指定配置文件,--all对所有索引重新编译

 

 

 

 

Cp /usr/local/mysql/lib/mysql/libmysqlclient.so.16 /usr/lib

 

 

./search linux   //测试  

新插入数据后直接搜索还是搜不到,只有重新索引后才可。

insert into saisai values(5,”spider”,”斯百德”); //插入中文,测试中文索引

测试不通过

8.4coreseek中文索引部署

8.4.1安装coreseek

Sphinx默认是不支持中文的,我们需要引入coreseek进行中文索引,因为它包含了mmseg中文分词组件。

Wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz 

Tar zxvf coreseek-3.2.14.tar.gz

解压后,分别是sphinx文件csft和中文字符文件mmseg,说明文件和链接文件

Cd coreseek-3.2.14/mmseg    //先安装中文分词,然后整合进去

./configure –prefix=/usr/local/mmseg

会报错:config.status: error: cannot find input file: src/Makefile.in

automake  //执行automake,自动配置环境

接下来sphinxmmseg结合

Cd coreseek-3.2.14/csft-3.2.14/

./configure --prefix=/usr/local/coreseek --with-mysql=/usr/local/mysql --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/

最后:Make && make install

8.4.2配置coreseek

Cp /usr/local/csft/etc/sphinx.conf.disk  /usr/local/csft/ect/csft.conf

sphinx其他都一样,只要在main主数据文件“#charset_type=sbcs

后增加“charset_type=zh_cn.utf-8”和“charset_dictpath=/usr/local/mmseg/etc”指定字符集和mmseg安装目录即可

然后重新刷新索引进行测试即可,还可以看到他还识别词组

 

8.5中文分词

对于英文字符间有空格比较直观,而中文却不行。并且中文拥有一些容易歧义的语句,更是增加了难度。

分词的算法:

1、              基于字符串匹配的分词方法:它是基于词典的分词方法。有正向,逆向和双向的顺序,又有最大,最小,逐词和最佳。

2、              基于理解的分词方法:人机模拟,目前测试阶段

3、              基于统计的分词方法:根据概率来的

8.6php使用sphinx技术

Sphinx集成到php需要两种方式:

1.       sphinx php模块

2.       sphinxapi

8.6.1sphinx模块

/csf-3.12.12/api下可以看到sphinxapi.php模块

要想在php程序中开启sphinx必须启动sphinx服务,到/usr/local/coreseek/bin下有searchd命令,可以控制sphinx

参数:-c 指定配置文件,--stop停止服务,--pidfile指定pid文件,-p指定端口

 

Wget http://pec1.php.net/get/sphinx-1.1.0.tgz

Tar zxvf sphin-1.1.0.tgz

Cd sphin-1.1.0

/usr/local/php/bin/phpize   //加载模块

./configure –with-php-config=/usr/local/php/bin/php-config  //报错

我们先安装cd core-3.2.14/csf-3.214/api/libclient

./configure

Make && make install

然后cd sphinx-1.1.0

./configure –with-php-config=/usr/local/php/bin/php-config

Make && make install

 

 

 cd   /usr/local/php5/lib/php/extensions/no-debug-zts-20090626/

Vi /etc/php.ini  //加载sphinx.so模块

/usr/local/apache2/bin/apachectl restart   //重启apache

192.168.211.128/info.php  //看到sphinx模块

8.6.2sphinx类方法

Cp coreseek-3.2.14/csf-3.2.14/api/sphinxapi.php /usr/local/apache2/htdocs/include/sphinxapi.php  //加载类

8.6.3搭建windowslinux编程环境

Yum install samba*

配置samba

复制home的选项,新建一个web的目录,重启服务

创建一个smb用户

开始》运行-\\192.168.211.128\web

创建磁盘映射,计算机->映射网络驱动器

确定即可创立一个映射磁盘

插入数据拒绝

我们知道apache使用apache用户,我们最好让映射磁盘也使用apache用户,这样可以保证windows下创建的文件可以直接访问。

Net usr /delete *   //删除磁盘映射

创建新的用户,我们使用新的apache用户登录

创建文件可以看到是apache用户

这样就实现了windowslinux的同步。

传一个数据过来,建立一个新的sphinx客户端,连接到9312端口,anyall两种,any这里选择是任意的,all是指只包含,通过query搜索关键词,*任意索引,至此得到文档id

 

 

 

本文转自zsaisai 51CTO博客,原文链接:http://blog.51cto.com/3402313/989242

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
25天前
|
存储 缓存 运维
阿里云服务器经济型e与通用算力型u1实例各自性能、适用场景区别及选择参考
在选择阿里云服务器实例规格时,经济型e实例和通用算力型u1实例因其高性价比和广泛适用性,备受个人开发者、中小企业的青睐。在同地域、相同配置的情况下,经济型e和通用算力型u1实例的价格相对于其他实例规格要低一些,很多个人和初创企业用户都会优先考虑选择这两个实例规格的云服务器,那么它们之间有什么区别?各自的性能、适用场景上有何区别?我们应该如何选择呢?本文将详细解析这两款实例的性能特点、适用场景、价格优势及购买建议,帮助用户更好地理解并选择合适的云服务器实例。
|
17天前
|
存储 分布式计算 安全
阿里云服务器经济型、通用算力型、计算型、通用型各主要实例性能、适用场景对比
在阿里云目前的活动中,云服务器实例规格有几大类,分别是轻量应用服务器、经济型e实例、通用算力型u1实例,第七代计算型c7、通用型g7、内存型r7实例,第八代计算型c8i、通用型g8i、内存型r8i实例,倚天云服务器实例计算型c8y、通用型g8y、内存型r8y实例,不同类型的实例规格,性能和适用场景不同,本文将这些热门实例规格的性能和适用场景全部展示出来,以供大家做对比和选择参考,从而选择出适合自己需求的云服务器实例规格。
|
18天前
|
存储 缓存 安全
阿里云服务器通用算力型u1实例怎么样?实例性能与测评结果参考
本文将通过性能评测、适用场景、特点介绍、实测数据分享以及最新活动价格等多个方面,全方位解析这款云服务器实例,以供用户了解和参考。
|
1月前
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
49 8
|
2月前
|
监控 持续交付 API
深入理解微服务架构:构建高效、可扩展的系统
深入理解微服务架构:构建高效、可扩展的系统
54 3
|
2月前
|
机器学习/深度学习 自然语言处理 物联网
NeurIPS 2024 Oral:小参数,大作为!揭秘非对称 LoRA 架构的高效性能
近期,一篇题为《\model~: 非对称LoRA架构实现高效微调》的论文被NeurIPS 2024接收为口头报告,该研究提出了一种创新的非对称LoRA架构,旨在解决大型语言模型(LLMs)在保持高性能的同时提高训练和部署效率的问题。通过引入共享A矩阵和多个B矩阵,\model~不仅提高了参数效率,还在多个数据集上展示了超越现有PEFT方法的性能,尤其是在多任务域和复杂数据集上的表现尤为突出。此架构还有效减少了训练能耗和延迟,为LLMs的高效应用提供了新思路。
40 4
|
2月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
47 4
|
2月前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c8i实例解析:实例规格性能及使用场景和最新价格参考
计算型c8i实例作为阿里云服务器家族中的重要成员,以其卓越的计算性能、稳定的算力输出、强劲的I/O引擎以及芯片级的安全加固,广泛适用于机器学习推理、数据分析、批量计算、视频编码、游戏服务器前端、高性能科学和工程应用以及Web前端服务器等多种场景。本文将全面介绍阿里云服务器计算型c8i实例,从规格族特性、适用场景、详细规格指标、性能优势、实际应用案例,到最新的活动价格,以供大家参考。
|
20天前
|
存储 Oracle 固态存储
阿里云服务器ESSD云盘性能级别详解
存储性能对于应用的运行效率和用户体验至关重要,阿里云作为领先的云服务提供商,为用户提供了多种存储解决方案,其中ESSD云盘以其高性能和灵活性备受关注。本文将详细介绍阿里云服务器ESSD云盘的四种性能级别——PL0、PL1、PL2和PL3,以及它们各自的单盘IOPS性能上限和容量大小等关键信息,帮助您更好地选择适合自身需求的存储方案。
|
2月前
|
存储 弹性计算 缓存
阿里云服务器通用型g8i实例性能与使用场景介绍及最新收费标准参考
阿里云ECS通用型g8i服务器采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。ECS通用型g8i实例支持开启或关闭超线程配置,单台g8i实例最高支持100万IOPS。阿里云ECS通用型g8i实例CPU采用Intel®Xeon®Emerald Rapids或者Intel®Xeon®Sapphire Rapids,主频不低于2.7 GHz,全核睿频3.2GHz。本文为大家介绍通用型g8i实例性能与使用场景介绍及最新收费标准,以供参考。

热门文章

最新文章