简述智障版本搜索引擎架构

先上个头文件吧(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的网站。

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

posted @ 2017-06-15 15:49  qscqesze  阅读(463)  评论(0编辑  收藏  举报