全文检索
pzlpy
这个作者很懒,什么都没留下…
展开
-
全文检索之sphinx源码分析--优化(二)
对上一篇的优化部分简要解释一下代码的变动,由于还是涉及一些工作上的业务,所以不会原模原样的写下来,不过解释一下逻辑则具体的代码实现也不会太难的 searchd 1、通过文件名排除不需要检索的索引文件,在RunSubset函数中通过对m_dQueries.m_dFilters.m_sAttrName.cstr()进行操作可以取得之前提到的where条件里的YYY的原创 2017-09-04 09:48:00 · 377 阅读 · 0 评论 -
全文检索之sphinx源码分析--检索流程
Sphinx查询时最关注的是match里面的几个关键字的查询方式,因此每个检索语句下发到每个索引文件中去的时候首先做的就是对关键字进行结构化构建,得到的第一棵树是n叉树,然后这颗n叉树会进行第二次重构,重构以后的就是一颗有序的二叉树,每个二叉树非叶子节点就是需要做的操作,而每个叶子结点都代表了一个关键字。 上图为sphParseExtendedQuery函数构建的一颗n叉树,代表了m原创 2017-08-27 20:32:02 · 552 阅读 · 0 评论 -
全文检索之sphinx源码分析--索引创建流程
sphinx是c++语言编写的一个开源全文检索项目,索引文件创建速度和检索速度都是不错的。由于公司的项目需要我对其源码进行了解读,并在其上进行了一定程度的改写以适应项目检索提速的需求。这篇文章就是我对sphinx源码的解读心得,sphinx基于2.1.9版本。 大体上来讲sphinx分成indexer和searchd两个最主要的进程,indexer负责创建索引文件,searchd负责接收网络包并原创 2017-08-23 21:40:59 · 1815 阅读 · 1 评论 -
全文检索之sphinx源码分析--配置文件和轮转操作
从索引的数据来源、实时可见性的角度来看,我们可以认为conf配置文件是Sphinx组件的中心。所有有关数据来源、索引文件包含的数据量、数据属性、检索程序searchd监听的端口、响应时间等等一系列配置参数都来自conf文件。 下面以一些典型的配置文件配置项来进行解释: source xxx:基本数据来源,每次创建索引文件时都是都执行该段的sql_qurey语句,从中获取基本原创 2017-08-31 23:38:48 · 371 阅读 · 0 评论 -
全文检索之sphinx源码分析--优化
以下的优化措施都是基于我当前的项目做得,目的是为了提升系统效率和减少资源消耗,系统不同需求不同,所以只能是仅供参考。 Indexer优化 1、减少数据库压力,修改从数据库中取数据为从文本中取数据,需要在编译的时候加入xml选项并且安装libexpat。但是通过测试实在不推荐这种用法,因为libexpat这东西十分脆弱,必须对xml输入的数据进行遍历清洗,同时如果xml的数据里也有xml原创 2017-09-02 09:41:03 · 570 阅读 · 0 评论