高级技术sphinx笔记

发布 2020-01-02 09:58:28 阅读 1578

mongodb

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

好比商品名称查询:

# select * from tablename where goods_name like “%苹果%”;出现在关键字的最左边索引失效但是“苹%”这样不失效。)

因为对mysql数据库来说,它不清楚查询多少记录可以满足条件,只能做全表扫描。甚至有可能拖垮mysql服务器。

解决方案:使用sphinx中文分词搜索引擎来实现全文搜索。

英文分词比较简单实现,英文是以空格做区分的。 i am a boy.

例子:中文分词:衣服和服装

人的思维:衣服服装 (两件物品)

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

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

好比拿红楼梦:全部的文章做一次排序或者搜索,会发现很多词语都是重复的。

例子:叔叔、哥哥、吃饭、干什么出现的次数满足一定的频率。把这些单词形成一个词典。在一次对语句做分词的时候,就去词典里面查找,看是否满足,满足的话就认为这是一个分词。

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

目前做的最好的就是,的中文分词技术是目前最厉害的(李彦宏),国内有家叫海量公司做的分词也不错。搜索技术是为了以后人工智能、大数据库挖掘作准备的。

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

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

英文分词:用空格分词 i am a boy.

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

注意:sphinx是俄罗斯人开发的。本身只支持俄文和英文。

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

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

答:对应mysql数据库中的字段,就是将字段中的中文信息拆分成多个词语,然后对这些词语建立索引。以后查询的时候,先去查询这些索引文件,然后返回这些满足条件的记录的主键id,然后根据主键id查询mysql数据库,返回记录。

什么是sphinx?(百科)

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

注意:默认sphinx只支持英文和俄文。

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

官网:客户案例:

注意两点:1. sphinx是一个全文搜索引擎,只支持俄文和英文。

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

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

故事:1. **。

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

mysql > source d:/

文件目录:命令:

千万注意: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. 效果。

高级氧化技术笔记

高级氧化技术的氧化机理是自由基氧化机理,它利用复合氧化剂 催化剂 高温高压 光 声或电等作用,诱发产生多种形式的强氧化活性物质,如羟基自由基 ho,与有机化合物之间产生加和 取代 电子转移 断健和开环等,使水体中的大分子难降解成为co2和h2o,使绝大多数的有机污染物完全矿化或部分分解。特点 1 产...

高级技术分析读书笔记

高级技术分析 读后感。高级技术分析 读后感。和商品的交易系统存在的时间几乎和市场一样久远。本书描述了创造交易系统的理论和测试法。即使你从未操作过商品,本书也会高诉你,在面临问题时所应该理解的事。书中会告诉你,大多数交易员最后还是输的理由。书中也会解释,为什么采取完全机械式的操作法是最佳的获利途径。本...

VBA学习笔记系列VBA高级技术

1.excel打开xml文件 在excel中打开的效果如下 现在我们在excel中添加一条记录 然后全部选中,右键 xml导出保存,我们可以替换前面存在的。效果如下 2.通过程序向excel中添加一个模式 3.数据透视图。4.数据透视表 5.很多时候的操作,我们可以录制宏,就可以把这个过程给转换成程...