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.很多时候的操作,我们可以录制宏,就可以把这个过程给转换成程...