简述智障版本搜索引擎架构
先上个头文件吧(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的网站。
反正慢慢调整权值就好了。