簡述智障版本搜索引擎架構

先上個頭文件吧(xpython

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

本人是某公司的智障程序員,因爲業務須要,就實現了一個簡單的搜索引擎。git

簡單說一下業務的需求:給我了一堆名詞,而後返回和每一個名詞最相關的連接地址就能夠了。程序員

我用腦殼想了想,這不就是個搜索引擎嘛。而後我花了一下午,實現了這個搜索引擎。github

我是個野路子,並無具體看過搜索引擎的書籍,因此如下都是我本身琢磨的……算法


搜索引擎的主要環節分爲:query -> query進行分詞 -> 計算每一個單詞在url出現的權重 -> 分詞結果進行合併獲得site權值 -> 權值排序優化

切詞部分

咱們對於每一個query,咱們首先進行切詞,把一個句子切分紅不少個詞語(term),而後每一個term在句子中,有本身對應的權值。網站

這個在github有不少開源的部分,我以爲不必本身實現這個玩意兒,隨便拿一個來用就行了搜索引擎

獲取每一個詞語在連接內的權值

這個玩意兒有一個算法叫作TF(Weighted Term Frequency)和IDF(Inverted Document Frequency)url

TF/IDF相關資料:http://blog.csdn.net/erlingmusan/article/details/25004035.net

也就是咱們可以利用這個算法 獲得 每一個詞語在site內的權值

也就是咱們要獲得一個 triple(term,url,value)這種東西

這個玩意兒在公司內,有現成的,大概10G左右大小,我設了一個閾值,就篩選掉了大概9/10的樣子

計算每一個url的價值

對於每個query,咱們要計算每一個url的價值,而後排序便可。

咱們其實就是讓 這個詞語在query的權重,乘上這個url的權值

而後每一個url把權值都加起來,就是這個url的價值

(計算方式怎麼均可以,這個得視具體狀況而定)

而後排序,就是搜索結果了。

Over

一個弱智版本的搜索引擎就實現啦!並且效率也特別高!

而後你就會發現,這個搜索引擎須要更多的優化了= =,排上來的都是些不符合query的網站。

反正慢慢調整權值就行了。

相關文章
相關標籤/搜索