文章目录
1)全文检索的原理
结构化数据搜索快,是因为有一定的搜索算法。
那么是不是可以将非结构数据中的一部分信息提取出来,
重新组织,使其变得有一定结构,
然后对这部分有结构的数据进行搜索,从而达到搜索较快的目的。
索引:从非结构数据中提取出来。重新组织的信息,叫索引。
反向索引:通过字符串来反向映射到文件,即:通过字符串找到对应的文件。
左边是一系列字符串,称为词典。
每个字符串都指向包含此字符串的文档链表(倒排表)。
优点:一次索引可以多次使用。
2)索引的建立
1. 有一系列要建立索引的原文档。
2. 将原文档传给分词组件,处理后得到词元。
具体操作:
1)将文档分为一个个单独的单词。
2)去除标点符号。
3)去除停词(无特别意义的单词,每一种语言的分词组件都有一个停词集合)。
3. 将词元传给语言处理组件,处理后得到一系列词。
具体操作:
1)变小写
2)将单词缩减为词根形式。
3)将单词转变为词根形式。
4. 将得到词传给索引组件,创建索引。
具体操作:
1)将得到的词创建一个字典。
2)对字典按照字母顺序进行排序。
3)合并相同的词成为文档倒排列表。
5. 通过索引存储将索引写入硬盘。
3)搜索过程
1. 用户输入查询语句。
2. 对查询语句经过语法分析和语言处理后,得到一系列词。
3. 通过语法分析得到一个查询树。
4. 通过索引存储将索引读入内存。
5. 利用查询树搜索索引,得到每个词的文档链表,对文档链表进行合并、去重,得到结果文档。
6. 将搜索到的结果文档对查询的相关性进行排序。
7. 返回查询结果给用户。
注:如何计算文档和查询语句的相关性?
1. 找出词对文档的重要性。
这个过程称为计算词的权重过程。
影响因素:词+文档
算法:向量空间模型
Term Frequency: 在本文档中出现的次数。
Document Frequency: 文档频次,总共有多少文档包含此词。
2. 判断词之间的关系,得到文档相关性。
3. 根据相关性从大到小排序。