开场白:sphinx是一个简单但功能相当强大的基于mysql的一个搜索插件包.
1 搜索速度方面稍比lucene快,索引分词速度上也比lucene的分词工具如:IK,paoding等快.(个人平时实践而言)
2 内存搜索与CPU占用方面,比lucene要控制得好.
3 灵活性明显比lucene要差,因为索引字段一定要基于数据库的字段,不能象lucene一样可以随时建立索引的字段.
4 不能象lucene一样只要继承Similarity就可以重写lucene排序的方法,即,关于排序的功能不如lucene好.
开始:这次我们讨论的不是讨论sphinx上的搜索,只是讨论聚类方面的实现.包括于mysql的表设计.
现在举一个例子:
现在有一个表,记录了包括各个分组的名称,结构如下
table person_info 个人信息
table group_mapping 分组映射表
记录了每一个分组的名称与分组的Id,同时person_info 中的分组Id都是基于 group_mapping 中的分组名称对应的Id.这样做是因为sphinx中不能直接保存数据的内容.所以如果对分组的中文进行分组,则返回的不是字段内容,而是一串数字,所以要用这样的groupId来表示分组,这样sphinx在建立索引的时候可以用数字作为建立索引了.
当我们对person_info做完索引的时候,可以启动sphinx提供的java接口的程序,来查询,当然我这里只是提供聚类的搜索,其实就是类似于 sql 语句的 group by .这可以实现了,
我们以刚才需要做聚类统计的字段 groupId 作为了group by 的条件.注意,比如现在输入某一个关键字来搜索的时候,同时也选择了某一个聚类的条件,搜索条件需要是这样的
@info 关键字 @groupIdVar 3
它的意思是指定了搜索字段,我们现在是用SphinxClient.SPH_MATCH_EXTENDED这种模式下搜索.大家会问,为什么聚类统计就是用groupId字段,但是搜索的要用groupIdVar呢?这样不是多此一举吗?直接搜索groupId就可以了吧...经过实践,发现,在搜索指定的字段方面,只能搜索是varchar类型的字段,而groupId却是一个int类型的,所以才会把表设计成相同的数值但不同的类型的原因了.总结就是.groupId是用来作聚类统计,groupIdVar则是用来指定搜索的.数值是一样,只是类型不相同.
OK,现在我们看看效果吧.可以看到,我们整一个person_info表中groupId只有四种,groupId=1,2,3,4
同时每一聚类的数量都由@count表示出来了,这样就实现了聚类了,同时如果按照聚类去搜索则可以以 @groupIdVar 聚类Id 就可以了.
可以看到搜索出来的全部都是以groupId=3的.
结论:coreseek以shpinx作为了对中文的支持,是大数据量的搜索提供了非常好另一个解决方案.不过个人认为coreseek其实可以完全脱离mysql而存在,这样可以使用sphinx使用更灵活,同时shpinx特别适合于一些对数据格式化不多的搜索应用.以上文章难免有错误之外,如有发现请欢迎随时提出.
欢迎连载,请注意出处 http://kernaling-wong.iteye.com/blog/642135 by kernaling.wong
分享到:
相关推荐
基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计
本文档介绍Sphinx4在Windows下的中文训练过程及注意事项,与本文档配套的是我自己的训练实例bergtrain和用到的软件。 本文档编写日期 2013-04-23 1、为什么要训练? sphinx4目前的版本中仅提供了英文等语音识别库。...
基于Sphinx+MySQL的千万级数据全文检索(搜索引擎) 架构设计,本文阐述的是一款经过生产环境检验的千万级数据全文检索(搜索引擎)架构
Sphinx可以非常容易的与SQL数据库和脚本语言集成。 当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的...
sphinx4需要使用连续的声学模型,官网上下载下来的中文声学模型全是半连续的,这里提供能够在sphinx4中使用的中文声学模型
Sphinx中文手册 sphinx的安装与使用技巧
官方下载链接在这里https://drive.google.com/open?id=0Bw_EqP-hnaFNSWdqdm5maWZtTGc 这个备用
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,...
基于数据挖掘的sphinx站内搜索结果改进的设计与实现,武红宽,马怡伟,sphinx在站内中文全文搜索能够有效的解决搜索效率的问题,但对于特定的应用场景,搜索结果准确性有待提高,为解决此问题,本文设计
这是我自己下载到的pocketsphinx的中文语音包/语音模型/声学模型,分享给一起学习语音识别的同学们。里面有这个语音包的使用方法
Sphinx-完整中文手册 Sphinx-完整中文手册 Sphinx-完整中文手册
sphinx系统是一个拥有悠久历史的语音识别系统,李开复自称第一个sphinx是他写的。 传说 中是第一个实用的10数字语音系统。 是由卡奈基.美隆大学研发。 sphinx3.x是基于C语言的最新版本,sphinx和 sphinx2请大家...
4、创建Sphinx索引文件和MySQL数据文件存放目录 6 5、创建MySQL配置文件(以线上配置文件为准) 6 ⑴、创建配置文件/mysql/3306/my.cnf(以db11的3306端口为例) 6 ⑵、创建配置文件/mysql/3406/my.cnf(以db11的...
pocketsphinx在windows下的中文语音识别 http://blog.csdn.net/itas109/article/details/78999477
sphinx 中英文分词快速检索 大数据快速搜索
从官网上拷贝的内容,然后转的pdf;自己看的时候加了部分标签
Sphinx overview Sphinx is an open-source full-text search server, designed from the ground up with performance, relevance (aka search quality), and integration simplicity in mind. Sphinx lets you ...
基于Sphinx+MySql+Python的站内搜索引擎的设计与实现.pdf
sphinx中文广播模型
sphinx中文分词 xdict_1.1.tar.gz