zoukankan      html  css  js  c++  java
  • 简述智障版本搜索引擎架构

    先上个头文件吧(x

    #!/usr/bin/env python
    # -*- coding: gb18030 -*-
    ########################################################################
    #
    # Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
    #
    ########################################################################
    

    本人是某公司的智障程序员,由于业务需要,就实现了一个简单的搜索引擎。

    简单说一下业务的需求:给我了一堆名词,然后返回和每个名词最相关的链接地址就可以了。

    我用脑袋想了想,这不就是个搜索引擎嘛。然后我花了一下午,实现了这个搜索引擎。

    我是个野路子,并没有具体看过搜索引擎的书籍,所以以下都是我自己琢磨的……


    搜索引擎的主要环节分为:query -> query进行分词 -> 计算每个单词在url出现的权重 -> 分词结果进行合并得到site权值 -> 权值排序

    切词部分

    我们对于每个query,我们首先进行切词,把一个句子切分成很多个词语(term),然后每个term在句子中,有自己对应的权值。

    这个在github有很多开源的部分,我觉得没必要自己实现这个玩意儿,随便拿一个来用就好了

    获取每个词语在链接内的权值

    这个玩意儿有一个算法叫做TF(Weighted Term Frequency)和IDF(Inverted Document Frequency)

    TF/IDF相关资料:http://blog.csdn.net/erlingmusan/article/details/25004035

    也就是我们能够利用这个算法 得到 每个词语在site内的权值

    也就是我们要得到一个 triple(term,url,value)这种东西

    这个玩意儿在公司内,有现成的,大概10G左右大小,我设了一个阈值,就筛选掉了大概9/10的样子

    计算每个url的价值

    对于每一个query,我们要计算每个url的价值,然后排序即可。

    我们其实就是让 这个词语在query的权重,乘上这个url的权值

    然后每个url把权值都加起来,就是这个url的价值

    (计算方式怎么都可以,这个得视具体情况而定)

    然后排序,就是搜索结果了。

    Over

    一个弱智版本的搜索引擎就实现啦!而且效率也特别高!

    然后你就会发现,这个搜索引擎需要更多的优化了= =,排上来的都是些不符合query的网站。

    反正慢慢调整权值就好了。

  • 相关阅读:
    Ubuntu18.04+windows10双系统时间同步教程
    Ubuntu官方源
    Ubuntu 16.04下OLSR协议安装教程
    Ubuntu 18.04中的Vim编辑器的高级配置
    关于vue-cli的安装
    var与let、const的区别
    jq点击相册弹出弹窗并可以轮播相册效果
    css三角形上下左右实心空心尖角箭头
    leetcode-44. Wildcard Matching
    c++转换构造函数和类型转换函数
  • 原文地址:https://www.cnblogs.com/qscqesze/p/7018191.html
Copyright © 2011-2022 走看看