美文网首页ElasticSearch入门玩转大数据大数据 爬虫Python AI Sql
三十九、Elasticsearch初识搜索引擎-倒排索引核心原理

三十九、Elasticsearch初识搜索引擎-倒排索引核心原理

作者: 编程界的小学生 | 来源:发表于2017-07-09 14:21 被阅读107次

    比如现在有两个document

    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.

    首先分词,初步的倒排索引的建立
    通俗的说就是将两个document合并,并去掉重复的单词,然后看doc1和doc2中是否出现了此单词

    单词 doc1 doc2
    I 出现 出现
    really 出现
    liked 出现 出现
    my 出现 出现
    small 出现
    dogs 出现
    and 出现
    think 出现
    mom 出现 出现
    also 出现
    them 出现
    He 出现
    never 出现
    any 出现
    so 出现
    hope 出现
    that 出现
    will 出现
    not 出现
    expect 出现
    me 出现
    to 出现
    him 出现

    上述就是倒排索引的整个过程

    搜索mother like little dog,不可能有任何结果,因为搜索这句话会先进行如下分词
    mother
    like
    little
    dog
    然后在拿着每一个分词去上面倒排索引表格中去找有没有匹配的单词,发现四个单词都未有匹配的,所以不会有结果。

    这个是不是我们想要的搜索结果???绝对不是,因为在我们看来,mother和mom有区别吗?同义词,都是妈妈的意思。like和liked有区别吗?没有,都是喜欢的意思,只不过一个是现在时,一个是过去时。little和small有区别吗?同义词,都是小小的。dog和dogs有区别吗?狗,只不过一个是单数,一个是复数。

    这就引入了一个知识点,normalization。
    建立倒排索引的时候,会执行一个操作,也就是说对拆分出的各个单词进行相应的处理,以提升后面搜索的时候能够搜索到相关联的文档的概率。

    会将上面表格中的
    liked --》like
    small --》little
    dogs --》dog

    搜索条件也会normalization,
    mom ―> mother
    liked ―> like
    small ―> little
    dogs ―> dog

    从上观察出进行了时态的转换,单复数的转换,同义词的转换,大小写的转换,这里只是举例子,ES远比这强大。

    这样在进行搜索
    就可以搜索出doc1和doc2两条数据了

    若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
    欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


    qrcode_for_gh_577b64e73701_258.jpg

    相关文章

      网友评论

        本文标题:三十九、Elasticsearch初识搜索引擎-倒排索引核心原理

        本文链接:https://www.haomeiwen.com/subject/giishxtx.html