40.倒排索引核心原理

主要知识点

倒排索引核心原理:normalization

   

假设有两个文档,内容如下

doc1I really liked my small dogs, and I think my mom also liked them.

doc2He never liked any dogs, so I hope that my mom will not expect me to liked him.

   

1、初步分词,只是确定该词是否在文档中存在,不做其他处理

   

word                doc1                        doc2

   

I                *                        *

really        *                        *

my                *                        *

small        *        

dogs                *

and                *

mom                *                        *

also                *

them                *        

He                                        *

any                                        *

so                                        *

hope                                        *

that                                        *

will                                        *

not                                        *

me                                        *

to                                        *

him                                        *

   

接下下搜索"mother like little dog",发现没有结果,doc1,doc2 都没有被搜索出来,原因如下:"mother like little dog",分词后的词为 motherlikelittledog。doc1和doc2均不含有这四个词,所以搜索不出来结果,

   

二、normalization

按常规来说,对于上述搜索es是应该出来结果的,因为mothermom是同义词,likeliked只是时态不同,littlesmall是同义词,dogdogs是单复数形式不同。可以发现如果仅仅这样建立是否存在的索引,而不做其他处理的话是没有多大用处的,所以在es内部,在建立倒排索引的会进行normalization, es对content的处理tokenization和normalization称为analysis过程。ES有很多种内置的analyzer来处理这些。normalization处理过程会在建立倒排索引的时候执行进一步的操作,对拆分出的各个单词进行相应的处理(包括但不限于时态的转换,单复数的转换,同义词的转换,大小写的转换等)以提升后面搜索的时候能够搜索到相关联的文档的概率。经过normalization处理后就可以搜索出正确的结果。

posted @ 2018-02-25 09:44  outback123  阅读(255)  评论(0编辑  收藏  举报