搜索引擎
benbendy1984
这个作者很懒,什么都没留下…
展开
-
srilm 安装
<br />1 下载 wget ftp://ftp.speech.sri.com/pub/people/stolcke/srilm/srilm-1.5.7.tar.gz<br /> <br />2 安装其他软件<br /> <br /> a yum -y install glibc-devel<br /> <br /> 否者出现如下的错误:<br /> <br /> /usr/include/gnu/stubs.h:7:27: error: gnu/s原创 2010-07-21 19:42:00 · 5644 阅读 · 0 评论 -
字典树 trie
<br /> <br />Trie,又称字典树,前缀树(prefix tree),是一种树形结构,用于保存大量的字符串。<br />它的优点是:利用字符串的公共前缀来节约存储空间。查找、插入复杂度为O(n),n为字符串长度。 <br />它有3个基本性质:<br />1. 根节点不包含字符,除根节点外每一个节点都只包含一个字符。<br />2. 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。<br />3. 每个节点的所有子节点包含的字符都不相同。<br /> <br />假设原创 2010-12-09 16:41:00 · 759 阅读 · 1 评论 -
搜索引擎排序
<br /> <br />1 tf 查询词在文档中出现的频率 <br />2 idf 衡量查询词之间的重要性 , 比如 :两个查询词 “可爱”和 “的” ,我们认为”可爱“会更重要点 <br />3 文档本身的长度 <br />4原创 2010-10-19 14:17:00 · 797 阅读 · 0 评论 -
文档列表做析取(or操作)优化
<br /> 在搜索引擎中,我们对于分词后的term进行查询,对得到的结果往往采用合取(and 操作),这种方式效率高,同时得到的结果也比较的少,但是,在小数据规模上,也往往出现无结果现象,影响召回率,所以有些时候还是得使用析取操作。<br /> 但是析取操作效率低,同时产生的结果集比较的多,对于后面的算分、排序等都有影响,所以很有必要在这个过程中作写优化工作。 <br /> 为了方便,我们举个列子,查询词是 ”dq的东西怎么样“ ,经过分词后的结果: dq / 的 /原创 2010-12-11 14:56:00 · 690 阅读 · 1 评论 -
搜索算法
<br />搞搜索引擎的,会碰到一些常用的算法,我罗列下,接下来也重点学习下: <br /> <br />二分查找<br />HASH查找<br />快速排序<br />窗口排序<br />多路归并<br />平衡树<br />B+Tree <br />SkipList<br />多级索引算法<br />数值压缩<br />Bitmap索引<br />路由分布算法<br />摘要提取算法<br />多级相关性排序算法<br />内存倒排算法<br />堆排序<br /> <br />原创 2010-12-09 15:37:00 · 947 阅读 · 2 评论 -
double array trie
<br />* Double Array Trie是TRIE树的一种变形,它是在保证TRIE树检索速度的前提下,提高空间利用率而提出的一种数据结构,本质上是一个确定有限自动机(deterministic finite automaton,简称DFA)。 <br />* 所谓的DFA就是一个能实现状态转移的自动机。对于一个给定的属于该自动机的状态和一个属于该自动机字母表Σ的字符,它都能根据事先给定的转移函数转移到下一个状态。 <br />* 对于Double Array Trie(以下简称DAT),每个节点代原创 2010-12-09 17:54:00 · 1304 阅读 · 10 评论 -
sphinx 查询过程
1 解析输入的参数2 从配置文件中解析参数, sphLoadConfig函数3 把查询语句解析成为语法树, 这个是在 XQParser::parse 函数中去调用 yyparse()完成的4 进行具体的检索, 因为是一颗树,需要递归的调用(EXTNode_i::create()原创 2011-07-21 10:46:14 · 882 阅读 · 0 评论 -
sphinx 特定字段的查询
在sphinx中支持特定字段的搜索,比如 @title abc , 就是在title 这个字段中查询abc 这个词,如何实现的: 1 首先在建立索引的时候,对于doclist 中的doc , 都保存了一个field 信息,就是 该词 在doc中的哪些字段原创 2011-07-21 16:59:13 · 2978 阅读 · 0 评论 -
sphinx python api 误用导致查询不到
对外服务的是使用一个sphinxapi对象的,每次一个请求过来,我会使用 SetFilter 进行城市的过滤,本来根据名字的意思应是个设置操作,但实际它是一个append过程,所以当 SetFilter过滤不同城市的时候, 其实存在两个过滤, 而过滤操作之间是进行and操作的,所以会导致无结果,所以我们在每次查询之前进行一个.ResetFilters()操作,就可以了。原创 2012-03-28 14:39:40 · 1729 阅读 · 0 评论