主要知识点
倒排索引核心原理:normalization
假设有两个文档,内容如下
doc1:I really liked my small dogs, and I think my mom also liked them.
doc2:He 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",分词后的词为 mother、like、little、dog。doc1和doc2均不含有这四个词,所以搜索不出来结果,
二、normalization
按常规来说,对于上述搜索es是应该出来结果的,因为mother和mom是同义词,like和liked只是时态不同,little和small是同义词,dog和dogs是单复数形式不同。可以发现如果仅仅这样建立是否存在的索引,而不做其他处理的话是没有多大用处的,所以在es内部,在建立倒排索引的会进行normalization, es对content的处理tokenization和normalization称为analysis过程。ES有很多种内置的analyzer来处理这些。normalization处理过程会在建立倒排索引的时候执行进一步的操作,对拆分出的各个单词进行相应的处理(包括但不限于时态的转换,单复数的转换,同义词的转换,大小写的转换等)以提升后面搜索的时候能够搜索到相关联的文档的概率。经过normalization处理后就可以搜索出正确的结果。