预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共36页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Sphinx全文检索Sphinx全文检索什么是全文检索二、按数据的分类,搜索也分为两种: 对结构化数据的搜索: 如对数据库的搜索:SQL语句。 再如windows的搜索:文件名,类型,修改时间。 对非结构化数据的搜索: 如windows对文件内容的搜索。 Linux下得grep命令。 再如Google和百度可以搜素大量内容数据。 对于非结构化的数据搜索也叫做对全文数据的搜索。三、对全文数据的搜索还可以分为两种 1、顺序扫描:如要找内容包含某个字符串的文件,会一个文档一个文档的从头到尾的找,如Like查找。 2、索引扫描:把非结构化的数据中的内容提取出来一部分重新组织,让它变的有结构化,这部分我们提取出来的数据就叫做索引.模拟词典全文检索大体分两个过程: 索引创建(Indexer)和搜索索引(Search)。 索引创建:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。 搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。三个重要问题索引所保存的信息一般如下: 假设我现在有100篇文档,从1到100表示。词典:保存的是一系列的字符串。 倒排表:指向包含字符串的文档链表。 比如说,我们要寻找既包含字符串“Sphinx”又包含字符串“PHP”的文档,我们只需要以下几步: 1.取出包含字符串“Sphinx”的文档链表. 2.取出包含字符串“PHP”的文档链表. 3.通过合并链表,找出既包含“Sphinx”又包含“PHP”的文件.二、如何创建索引? 全文检索的索引创建过程一般有以下几步: 一些需要创建索引的文档(Documents)。 将原文档传给分词组件(Tokenizer)。 将得到的词元(Token)传给语言处理组件(LinguisticProcessor)。 将得到的词(Term)传给索引组件(Indexer)。第一步:一些创建索引的文档。 文档1:Studentsshouldbeallowedtogooutwiththeirfriends,butnotallowedtodrinkbeer. 文档2:MyfriendJerrywenttoschooltoseehisstudentsbutfoundthemdrunkwhichisnotallowed.第二步:将原文档传给分词组件(Tokenizer)。 分词组件(Tokenizer)会做以下几件事情(此过程称为Tokenize): 1.将文档分成一个一个单独的单词。 2.去除标点符号。 3.去除停词(Stopword)。 所谓停词(Stopword)就是一种语言中最普通的一些单词: 英语中的停词(Stopword)如:“the”,“a”,“this”等。 中文中的停词如:‘是’‘的’‘这个’等。 对于每一种语言的分词组件(Tokenizer),都有一个停词(stopword)集合。 经过分词(Tokenizer)后得到的结果称为词元(Token)。 在我们的例子中,便得到以下词元(Token): Students、allowed、go、their、friends、allowed、drink、beer、My、friend、Jerry、went、school、see、his、students、found、them、drunk、allowed。第三步:将得到的词元(Token)传给语言处理组件(LinguisticProcessor)。 语言处理组件主要是对得到的词元做一些同语言相关的处理: 对于英语,语言处理组件一般做以下几点: 变为小写(Lowercase)。 2.将单词缩减为词根形式,如“cars”到“car”等。 这种操作称为:stemming。 3.将单词转变为词根形式,如“drove”到“drive”等。 这种操作称为:lemmatization。语言处理组件的结果称为词(Term)。 在我们的例子中,经过语言处理,得到的词(Term)如下: Student、allow、go、their、friend、allow、drink、beer、my、friend、jerry、go、school、see、his、student、find、them、drink、allow。 也正是因为有语言处理的步骤,才能使搜索drove,而drive也能被搜索出来。第四步:将得到的词(Term)传给索引组件(Indexer) 索引组件(Indexer)主要做以下几件事情: 利用得到的词(Term)创建一个字典。 对字典按字母顺序进行排序。 步骤1: 步骤2:DocumentFrequenc即文档频次 表示总共有多少 文件包含此词(Term) Frequency即词频率 表示此文件中 包含了几个此词(Term)三、如何对索引进行搜索 搜索