一看就懂系列之 亿万级项目都在用的sphinx

前言

年轻的时候总以为很多app或者网站的搜索功能是基于cache+sql的模式进行查询的,也未曾想过数据是亿万级别,用户也是亿万级别时候,cache和sql的入门级模式是否能应对。答案是肯定不能hold住的,现在年长了些,随着项目的发展有幸接触到相关解决方案,所以想记下来,备忘。
那么老规则本文主要解决三个问题:
1.如何解决与设计数据和用户都是亿万级别的搜索的思路。
2.sphinx的简介与特性
3.sphinx的安装与运行
4.sphinx在亿级项目中的使用场景

正文开始

1.如何解决与设计数据和用户都是亿万级别的搜索的思路。

首先当数据量和用户基数很大时候,意味着三个问题需要解决:
1.查询的次数会很多并且需要快速返回;
2.查询并发数会很高,如何正确的分流分压;
3.数据的增长会很快,这部分增长的数据如何有效的处理才能实时搜索到;

mysql自身的全文索引搜索慢,定制化程度低,自然无法满足解决上述问题,那么就需要更高性能的自定义的搜索,sphinx出现了,它提供了针对上述三大问题都有相应的解决方案。sphinx是以以俄国全文检索引擎,提供了高速、低空间占用、高结果相关度的全文搜索功能。主要方式是提供符合条件的数据源给sphinx,sphinx生成索引,依赖索引对外提供服务。更重要的是sphinx内置mysql数据库数据源的支持,使用起来非常简单,和使用mysql很大程度相似。

2.sphinx的简介与特性

我的理解中的sphinx

1.sphinx的机制两部分构成:生成索引+search索引
2.sphinx索引类型:普通索引+rt实时索引+分布式索引

特性(最新版sphinx性能某些方面更高于下面描述)

1.高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);
2.高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);
3.可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可
处理100 M 文档);
4.提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;
5.支持分布式搜索;
6.可作为MySQL的存储引擎提供搜索服务;
7.支持布尔、短语、词语相似度等多种检索模式;
8.文档支持多个全文检索字段(最大不超过32个);
9.文档支持多个额外的属性信息(例如:分组信息,时间戳等);
10.支持单一字节编码和UTF-8编码;
11.原生的MySQL支持(同时支持MyISAM 和InnoDB );
12.原生的PostgreSQL 支持.

反正就是很牛逼就是了。

3.sphinx的安装

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Pocketsphinx项目交叉编译到ARM平台,可以按照以下步骤进行操作: 1. 安装交叉编译工具链:在主机上安装适用于ARM的交叉编译工具链。 2. 下载Pocketsphinx源代码:从Pocketsphinx官方网站或GitHub上下载最新的源代码。 3. 配置交叉编译环境:在主机上配置交叉编译环境,包括设置环境变量和配置编译选项。 4. 编译Pocketsphinx项目:使用交叉编译工具链编译Pocketsphinx项目,生成适用于ARM平台的二进制文件。 下面是一个大致的步骤: ```bash # 1. 安装交叉编译工具链 sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf # 2. 下载Pocketsphinx源代码 git clone https://github.com/cmusphinx/pocketsphinx.git cd pocketsphinx # 3. 配置交叉编译环境 export CROSS_COMPILE=arm-linux-gnueabihf- export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export RANLIB=${CROSS_COMPILE}ranlib ./autogen.sh --host=arm-linux-gnueabihf --with-sphinxbase=/path/to/sphinxbase # 4. 编译Pocketsphinx项目 make make install ``` 在步骤3中,设置了交叉编译环境变量,并在执行`autogen.sh`时指定了`--host`和`--with-sphinxbase`选项,其中`--host`指定了目标平台,`--with-sphinxbase`指定了SphinxBase库的安装路径。 在步骤4中,使用交叉编译工具链编译Pocketsphinx项目,并使用`make install`将二进制文件安装到指定路径。 注意:在配置交叉编译环境时,需要根据实际情况调整环境变量和选项。如果遇到问题,可以参考Pocketsphinx官方文档或在社区寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值