倒排索引(Inverted Index)和正排索引(Forward Index)
正排索引是一种以文档为单位的索引结构,它将文档中的每个单词或词组与其所在的文档进行映射关系的建立。正排索引通常用于快速检索指定文档的内容,可以根据文档的编号或其他标识符快速定位到文档的内容。
倒排索引是一种以单词或词组为单位的索引结构,它将每个单词或词组与包含该单词或词组的文档进行映射关系的建立。倒排索引通常用于根据关键词进行文档的检索,可以根据关键词快速找到包含该关键词的文档列表。
正排索引和倒排索引的主要区别在于索引结构的建立方式和使用场景。正排索引适用于需要快速定位到指定文档的场景,而倒排索引适用于根据关键词进行文档的检索和查询的场景。
下面是正排索引和倒排索引的示意图:
正排索引示意图:
文档1 -> 单词1, 单词2, ...
文档2 -> 单词3, 单词4, ...
文档3 -> 单词2, 单词5, ...
倒排索引示意图:
单词1 -> 文档1
单词2 -> 文档1, 文档3
单词3 -> 文档2
单词4 -> 文档2
单词5 -> 文档3
总的来说,正排索引和倒排索引是信息检索中常用的两种索引结构,它们在索引和搜索过程中发挥着不同的作用,对于不同的应用场景有着不同的优势。
正常情况下我们将Id设置为主键索引能够快速查询到某条记录,但是有些字段不方便创建索引,如名称,简介等字段。
- es和MySQL对比
分词器
安装完IK分词器后有两个常用的分词模式ik_max_word
和ik_smart
ik_max_word
分词会分的更细。
ik_smart
发现一个词后就不会再对分过的词进行重新分词
如程序员
使用ik_max_word
分词。会分为程序员
,程序
,员
三个词
而使用ik_smart
的话,则就分一个程序员
一个词
各有优缺点
配置IK分词器的扩展字典,及禁用字典