下载此文档

Sphinx全文检索.ppt


文档分类:IT计算机 | 页数:约30页 举报非法文档有奖
1/30
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/30 下载此文档
文档列表 文档介绍
Sphinx全文检索

一、索引里面究竟存些什么?
为什么顺序扫描的速度慢?
非结构化数据中所存储的信息是每个文件包含哪些字符串,已知文件,欲求字符串,从文件到字符串的映射。
而我e
2
student
1
student
2
their
1
them
2
Document Frequency
即文档频次
表示总共有多少
文件包含此词(Term)

Frequency 即词频率
表示此文件中
包含了几个此词(Term)
3. 合并相同的词(Term)成为文档倒排(Posting List)链表。
到这里我们找到“想要得到的文档”
三、如何对索引进行搜索
搜索主要分为以下几步:
第一步:用户输入查询语句。
第二步:对查询语句进行词法分析,语法分析,及语言处理
第三步:搜索索引,得到符合语法树的文档。
第四步:根据得到的文档和查询语句的相关性,对结果进行排序。
第一步、用户输入查询语句
查询语句同我们普通的语言一样,也是有一定语法的。
不同的查询语句有不同的语法,如SQL语句就有一定的语法,
查询语句的语法根据全文检索系统的实现而不同。
最基本的有比如:AND, OR, NOT等。
例子,用户输入语句:Sphinx AND PHP NOT Linux。
说明用户想找一个包含Sphinx和PHP然而不包括Linux的文档
第二步:对查询语句进行词法分析, 语法分析,及语言处理。
1. 词法分析主要用来识别单词和关键字。
如上述例子中,经过词法分析,得到单词有Sphinx,PHP,Linux, 关键字有 AND,NOT。
如果在词法分析中发现不合法的关键字,则会出现错误。如Sphinx AMD Linux,其中由于AND拼错,导致AMD作为一个普通的单词参与查询。
2. 语法分析主要是根据查询语句的语法规则来形成一棵语法树。
3. 语言处理 同索引过程中的语言处理几乎相同。
如:Sphinx 变成 Sphin 除去停词等,我们得到经过语言处理的语法树。
AND
NOT
Sphinx
PHP
Linux
第三步:搜索索引,得到符合语法树的文档。
此步骤有分几小步:
首先,在索引表中,分别找出包含Sphinx,PHP,Linux的文档链表。
其次,对包含Sphinx,PHP的链表进行合并操作,得到既包含Sphinx又包含PHP的文档链表。
然后,将此链表与Linux的文档链表进行差操作,去除包含Linux的文档,从而得到既包含Sphinx又包含PHP而且不包含Linux的文档链表。
此文档链表就是我们要找的文档。
第四步:根据得到的文档和查询语句的相关性,对结果 进行排序
首先我们得到了想要的文档,然后我们需要对查询结果按照查询语句的相关度进行排序,越相关的越靠前。
如何计算文档和查询语句的相关性呢?
我们把查询语句看作一片短小的文档,对文档与文档之间的相关性(relevance)进行打分(scoring),分数高的相关性好,就应该排在前面。
那么又怎么对文档之间的关系进行打分呢?
我们先看看生活中的实例:
公司与公司之间的关系:
首先看一个公司是由什么人组成,如总经理,经理,首席技术官,普通员工,保安,门卫等。
其次公司与公司之间的关系,不同的人重要性不同:
总经理,经理,首席技术官可能更重要一些,普通员工,保安,门卫可能不重要。所以如果两个公司总经理,经理,首席技术官之间关系比较好,两个公司容易有比较好的关系。然而一位普通员工就算与另一家公司的一位普通员工有血海深仇,怕也难影响两个公司之间的关系。
如何判断文档之间的关系:
首先,一个文档有很多词(Term)组成,如search, Sphinx, fulltext, this, a, what等。
其次对于文档之间的关系,不同的Term重要性不同,比如对于本篇文档,search, Sphinx, fulltext就相对重要一些,this, a , what可能相对不重要一些。所以如果两篇文档都包含search, Sphinx,fulltext,这两篇文档的相关性好一些,然而就算一篇文档包含this, a, what,另一篇文档不包含this, a, what,

Sphinx全文检索 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数30
  • 收藏数0 收藏
  • 顶次数0
  • 上传人放射辐射
  • 文件大小1.88 MB
  • 时间2022-05-20