高级技术sphinx笔记.docx

上传人:b****7 文档编号:11098403 上传时间:2023-02-25 格式:DOCX 页数:16 大小:1.14MB
下载 相关 举报
高级技术sphinx笔记.docx_第1页
第1页 / 共16页
高级技术sphinx笔记.docx_第2页
第2页 / 共16页
高级技术sphinx笔记.docx_第3页
第3页 / 共16页
高级技术sphinx笔记.docx_第4页
第4页 / 共16页
高级技术sphinx笔记.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

高级技术sphinx笔记.docx

《高级技术sphinx笔记.docx》由会员分享,可在线阅读,更多相关《高级技术sphinx笔记.docx(16页珍藏版)》请在冰豆网上搜索。

高级技术sphinx笔记.docx

高级技术sphinx笔记

sphinx技术

mongodb

简介

问题:

在实际开发中,对于大文本的字段,例如(text、varchar),在做查询的时候,一般我们会使用模糊查询,这个时候,如果是like%name%这样的查询,这个时候索引就会失效。

好比商品名称查询:

#select*fromtableNamewheregoods_namelike“%苹果%”;(%出现在关键字的最左边索引失效但是“苹%”这样不失效。

因为对MySQL数据库来说,它不清楚查询多少记录可以满足条件,只能做全表扫描。

甚至有可能拖垮MySQL服务器。

解决方案:

使用sphinx中文分词搜索引擎来实现全文搜索

英文分词比较简单实现,英文是以空格做区分的。

iamaboy.

例子:

中文分词:

衣服和服装

人的思维:

衣服服装(两件物品)

程序思维:

衣衣服衣服和和服服装服(程序分词是基于字频法)

字频法:

常见的汉字词语出现的概率是有规律可寻的。

好比拿红楼梦:

全部的文章做一次排序或者搜索,会发现很多词语都是重复的。

例子:

叔叔、哥哥、吃饭、干什么出现的次数满足一定的频率。

把这些单词形成一个词典。

在一次对语句做分词的时候,就去词典里面查找,看是否满足,满足的话就认为这是一个分词。

但是:

对于一些专业词汇(英语专业、化学专业),这个需要专门的人去做分词的词典。

这个时候是要收费的。

目前做的最好的就是XX,XX的中文分词技术是目前最厉害的(李彦宏),国内有家叫海量公司做的分词也不错。

搜索技术是为了以后人工智能、大数据库挖掘作准备的。

明白只有在数据量足够大的情况下,很多事情是满足一定的概率,是可以被计算的。

例如:

XX在做搜索的时候,会将搜索的关键字做一下分词,然后尽可能搜索出满足条件的信息(例如【红色的衣服】===红色衣服)

 

英文分词:

用空格分词iamaboy.

由于中文没有很好的分隔符,所以分词的时候,相对来说是很难的。

注意:

Sphinx是俄罗斯人开发的。

本身只支持俄文和英文。

但是有好事之人,就为Sphinx单独开发了中文分词包(分词词典)(将我们日常生活中使用的词语,分割成一个个的中文单词,形成一个很大的中文词库(类似一个数据字典、辞海)),但是如果专业词语分词(化学专业、法律),这个是要收费的。

在我们php开发中如何使用sphinx技术?

答:

对应MySQL数据库中的字段,就是将字段中的中文信息拆分成多个词语,然后对这些词语建立索引。

以后查询的时候,先去查询这些索引文件,然后返回这些满足条件的记录的主键id,然后根据主键id查询MySQL数据库,返回记录。

什么是sphinx?

(XX百科)

注意:

对于sphinx来说,单表千万条记录,响应的时间都是毫秒级别的。

注意:

默认sphinx只支持英文和俄文

官网:

由于Sphinx只支持以上两种语言,所以有第三方公司为sphinx开发了中分分词包,叫做coreseek

官网:

客户案例:

注意两点:

1.sphinx是一个全文搜索引擎,只支持俄文和英文

2.由于上面的原因,有专门的公司为其开发了中文分词包,叫做coresesk。

3.中国有一家做的比较好的公司(海量分词)

故事:

实操

1.下载

2.构建一个大数据的表(歌词表)

mysql>sourced:

/songs.sql

文件目录:

命令:

sphinx安装-使用

安装

千万注意:

sphinx的配置文件一定不能使用Windows的记事本打开。

(BOM头)

API接口文件:

可以用php调用该接口去操作sphinx服务器端的索引文件。

1.修改配置文件

索引文件

内存设置:

sphinxd配置:

2.建立索引

配置文件中index后面的名称

建立索引后的目录结构

3.实际使用

a.开启sphinx的服务,可以使用帮助信息查看如何使用

使用:

1.可以单独的读取配置文件运行

2.也可以安装成Windows的一个系统服务来运行

启动sphinx服务(读取配置文件单次启动)

定义为系统服务后(安装)

使用

1.具体使用(sphinx流程可以见下图)

sphinx流程图:

sphinx存储引擎:

通过下面的步骤发现,发现php程序在做查询的时候,必须先根据sphinx服务器返回主键ID,然后根据主键ID去查询MySQL数据库,最后返回数据库。

这个时候,可以这样思考,将sphinx作为MySQL的一个存储引擎使用,这个时候php程序就可以直接的去连接MySQL服务器,MySQL服务器去自身的sphinx存储引擎里面获取分词后的数据。

不需要连接一次sphinx服务器了。

这个存储引擎叫做sphinxSE。

2.简单使用

3.使用

案例:

在线歌词查询系统

场景:

用户在搜索框输入一个歌词相关的短语,然后查询出满足条件的信息,并高亮显示出来

1.建立一个搜索页面

点击【查询】发送ajax查询请求

2.创建一个后台脚本文件,处理前台请求

3.前台拼接字符串显示

4.效果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1