先上個頭文件吧(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的樣子
對於每個query,咱們要計算每一個url的價值,而後排序便可。
咱們其實就是讓 這個詞語在query的權重,乘上這個url的權值
而後每一個url把權值都加起來,就是這個url的價值
(計算方式怎麼均可以,這個得視具體狀況而定)
而後排序,就是搜索結果了。
一個弱智版本的搜索引擎就實現啦!並且效率也特別高!
而後你就會發現,這個搜索引擎須要更多的優化了= =,排上來的都是些不符合query的網站。
反正慢慢調整權值就行了。