0
点赞
收藏
分享

微信扫一扫

es倒序索引原理

3. 倒排索引原理:

(1). 两个document:

  • The quick brown fox jumped over the lazy dog
  • Quick brown foxes leap over lazy dogs in summer

(2). 提取文档分词,建立倒排索引(区分了大小写):

Term      Doc_1  Doc_2
-------------------------
Quick   |       |  X
The     |   X   |
brown   |   X   |  X
dog     |   X   |
dogs    |       |  X
fox     |   X   |
foxes   |       |  X
in      |       |  X
jumped  |   X   |
lazy    |   X   |  X
leap    |       |  X
over    |   X   |  X
quick   |   X   |
summer  |       |  X
the     |   X   |

(3). 搜索含有quick或brown的文档:

Term      Doc_1  Doc_2
------------------------
brown   |   X   |  X
quick   |   X   |
------------------------
Total   |   2   |  1

  • Doc_1中含有两个单词,对于搜索的匹配度要高于Doc_2.
  • 根据搜索的匹配度,计算相关度分数时,Doc_1的匹配度高,分数会比Doc_2高.
  • 因此,分数高就会排在前面.

(4). 问题:

  • Quick和quick以独立的词条出现,但用户搜索的时候,可能认为它们是相同的词(不区分大小写).
  • fox和foxes、dog和dogs都是非常相似词根.
  • jumped和leap是同义词(相关的).
  • 要搜索含有Quick和fox的文档是搜索不到的(是区分大小写的).
  • 这样的倒序索引意义不大.

4. 标准化规则(normalization):

建立倒排索引的时,会对拆分出的各个单词进行相应的处理(即做了标准化规则),以提升相关联的文档的概率.

Term      Doc_1  Doc_2
-----------------------
brown   |   X   |  X
dog     |   X   |  X
fox     |   X   |  X
in      |       |  X
jump    |   X   |  X
lazy    |   X   |  X
over    |   X   |  X
quick   |   X   |  X
summer  |       |  X
the     |   X   |  X

  • 使用标准化规则处理的最终结果.
  • 将不区分大小写、fox单复数、同义词合并为一个单词.
  • 提高了用户搜索的概率.

5. 分词器:

分词器就是从一串文本中切分出一个一个的单词,并对每个单词进行标准化.

5.1 三部分:

  • character filter: 分词之前的预处理,过滤掉HTML标签,特殊符号转换等.
  • tokenizer: 分词
  • token filter: 标准化

5.2 内置分词器:

  • standard分词器: a. es默认的分词器. b. 将词汇单元转换成小写形式,并去除停用词和标点符号,支持中文采用的方法为单字(一个一个字)切分. c. 停用词指的是在自然语言处理中,一些不包含什么信息的词语,以及一些特别高频的词: 如the、to、the、a、an、and等...
  • simple分词器: a. 先通过非字母字符来分割文本信息,再将词汇单元统一为小写形式. b. 会去掉数字类型的字符.
  • Whitespace分词器: a. 仅仅去除空格,对字符没有lowcase(小写)化,不支持中文. b. 不对生成的词汇单元进行其他的标准化处理.
  • language分词器: a. 特定语言的分词器,不支持中文.
举报

相关推荐

mysql索引倒序

java倒序

mysql分页+倒序

jpa queryAll 倒序

java vector倒序

NSArray 倒序 输出

HashMap的倒序排序

0 条评论