倒排索引原理 1.The quick brown fox jumped over the lazy dog 2.Quick brown foxes leap over lazy dogs in summer 倒排索引: 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 | 搜索quick brown : Term Doc_1 Doc_2 ------------------------- brown | X | X quick | X | ------------------------ Total | 2 | 1 计算相关度分数时,文档1的匹配度高,分数会比文档2高 问题: Quick 和 quick 以独立的词条出现,然而用户可能认为它们是相同的词。 fox 和 foxes 非常相似, 就像 dog 和 dogs ;他们有相同的词根。 jumped 和 leap, 尽管没有相同的词根,但他们的意思很相近。他们是同义词。 搜索含有 Quick fox的文档是搜索不到的 使用标准化规则(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
流程大概就是数据->es内部分词器分词->倒排列表