聲明:本文來自于微信公眾號 流量販子SEO(ID:kaopuseo1),作者:GoGo闖,授權轉載發布。
01
搜索引擎基本概念:爬取、索引、召回、粗排、精排、重排
爬取 & 索引
搜索引擎爬取全網海量頁面 → 進行基本的質量評分 → 過濾出小部分質量較佳的網頁 → 創建倒排索引(能夠通過關鍵詞查詢文檔)
召回
用戶發起搜索請求 → 搜索引擎先對關鍵詞進行糾錯處理 → 拆成多個詞項 → 去索引中查找能夠命中這些詞項的文檔,可能就是這個數
粗排
但是文檔的實在數量太多了,一股腦的都推給用戶顯然很二逼,用戶不可能都看完,只會看其中極小的一部分,另外也沒法保證質量。
所以要從海量召回的文檔中,刪除其中內容高度重復的文檔,并篩選與搜索詞最相關的760個文檔,展現給用戶。
這個環節屬于海選,需要大量計算,為了不讓用戶等待過長,一般用快捷優先且相對簡單的處理方式,比如BM25、TF-IDF、LDA,具體還有啥咱也不知道。
精排
之后就是對760篇文檔排序的過程,最終的目的是讓排序結果最大概率符合用戶預期的結果,這樣用戶才更有可能點進去了解詳情,從而提升搜索的業務價值。
這部分比海選要復雜的多,涉及一大堆數據挖掘、機器學習、用戶行為分析、用戶意圖識別等算法,大概包括:
通過用戶搜索詞和前N次搜索詞,結合歷史日志中其他搜索該詞的用戶瀏覽行為,來揣測用戶可能的搜索意圖
文檔的更新時間
文檔的歷史點擊率
文檔瀏覽后終結搜索的比例
用戶的網絡維度特征(IP、網絡類型、地域....)
與搜索詞文本匹配度最高的TopN條文檔
與搜索詞潛在意圖覆蓋率最高的TopN條文檔
....太多了咱也不知道
上述過程,對應著搜索引擎中,爬取、索引、召回、粗排、精排的幾個階段,屬于搜索引擎系統入門級的常識。
重排
現在精排后面,還有重排,根據用戶的搜索場景(網絡、設備、近期點擊行為等)和媒體熱點,實時調整排序,比如:
你用wifi跟手機網絡,搜索結果可能有所不同
今天上午點擊的某個結果,下午再次搜索時排名就上去了
上午媒體爆料一個叫GoGo闖神秘人和迪麗熱巴約會了,然后下午GoGo闖的搜索結果,就跟上午完全不同了
02
如何研究排名(一家之言)
研究收錄 vs 研究排名
在16年以前,本渣覺得研究「排名」是最難的,后來搞了一堆單頁站群、泛站群、資訊站群和少數幾個單站,大概前后10萬域名出頭,發現「搞定收錄」其實比「搞定排名」麻煩的多,甚至應付廣告主沒事總tm扣量、跑路不結算、域名被停止解析....,我覺得都比研究排名麻煩。
因為在16年以前,本渣接觸的都是大站,日UV百萬級的,所以收錄的問題不大,一般就是某個目錄收錄率低,但不存在完全不收錄,或收錄極其緩慢的問題。
畢竟,大站參與760名排序的概率很大的,But一堆海量小站,參與召回的機會都沒有。
研究大站 vs 研究小站
所以,本渣覺得,大站與小站,研究排名,是兩種路線:
大站研究的是,做的詞怎樣上首頁。
小站研究的是,做哪些詞能上首頁。
研究的方法有兩種:正推 和 逆推
03
正推
正推就是假設一堆條件,挨個去測試,能否達到自己預期的結果。比如快排的開發,大部分都是正推的,需要大量測試
逆推就是通過分析已有的結果,找出其中共同的規律,需要大量觀察
僅研究百度SEO排名規律上,正推的門檻極高。
比如,很久以前,本渣抓了1000個詞(同一個詞根)的搜索結果,把每個詞的760個結果對應的網頁全弄下來,最后我記得就不到40萬篇,接近50%的搜索結果都是重復的。
然后我把這批網頁導入到xunsearch(一個開源的搜索引擎,并不是說這個好,而是本渣當時只會這個,還不知道有elasticsearch這個東西)并建立倒排索引。
同時我還把默認詞庫整理了下,讓這部分行業詞分詞更準確。
我的想法是:
第一步:在xunsearch和baidu,同時搜索一個詞,通過調整xunsearch搜索參數,調整出跟百度很接近的結果,比如top10文檔大部分一樣,只是順序略有差別。
第二步:我就修改自己網頁的內容,推到xunsearch更新下索引,再次xunsearch搜索下,如果top10能出來,線上網頁就按本次修改的上線。如果沒出來,就修改其他地方,直到能在Top10出現。
理想豐滿,現實骨感。
反正第一步始終沒出來,畢竟商業搜索引擎,和開源搜索引擎,很多地方是不同的。
但是這只能代表百度,因為其他搜索入口,如研究微信搜一搜、知乎、小紅書的排名規律就容易的多,首先這些平臺不存在收錄的問題,內容不違規即是收錄,二是影響排序的因子比百度少很多。
anyway,正推我是放棄了
04
逆推
下面說說當時做的逆推的思路,相對來講,逆推比正推省事很多。
長尾關鍵詞
long long time ago,在做站群的時候,當時開發的還不是泛解析程序,能承載無限個關鍵詞的。是庫里有多少詞,這個程序就生成多少對應數量的頁面,或二級域名。
這意味著,如果庫里面塞了一堆根本不可能排在首頁的關鍵詞,這是浪費系統資源的,畢竟新域名收錄有限,自然希望收錄的頁面,都是大概率能上排名的頁面。
一個流量詞呢,在搜索結果表現,有4種特征:
Top10結果愛站權重很高(平均權重>7)
Top10結果愛站權重很低(平均權重<2)
搜索結果數很低(搜索結果數<1000)
有高有低(平均權重2-4)
第一種可能這個詞競爭度很大,或者本身是比較敏感的詞,比如醫療養生類的,所以百度特意分流給了一些信任度高的大站
第二種可能這個詞是違禁的,但百度有沒來得發現,也可能這個詞還沒被很多人發現。這個可以根據搜索結果的標題,是否完全命中關鍵詞來判斷,能命中是前者,不能命中是后者
第三種是這個詞是違禁的,且已經被百度發現刪除
第四種是正常的詞,比如不算熱門的小說、漫畫名啥的
已排名優先的清洗關鍵詞措施,是找出第1種和第3種詞,然后刪除掉。
所以當時找詞,比如從愛站導出來的競品網站關鍵詞,會先按如上方法洗詞,洗完之后在上線。同等域名數量的情況下,能多出25%的流量。
以上是研究長尾詞能夠大概率上首頁的問題,下面來聊聊核心詞的排名。
獨立核心詞排名
以前有一種刷詞方法,比如核心詞是「SEO」,會去同時刷創造出來的新詞,比如「SEO流量販子」,同時title也改成這個詞。
經過 “恰如其分的刷量比例 & 時間拉長”,「SEO」與「SEO流量販子」會產生關聯,「SEO流量販子」是「SEO」搜索意圖中的一種
這樣「SEO流量販子」排名到首頁后,在加大「SEO」的點擊,這樣核心詞「SEO」上首頁的概率,比直接硬點概率要大一些。
所以之前,SEO這個詞,在百度指數的下拉,或百度搜索框的下來,總有一些爛七八糟的詞
判斷網頁與核心詞的真實相關性(排除點擊加權)
當然,這個不是絕對,同時也跟百度認為網頁本身與核心詞有多大相關性有關。
比如很多刷快排的站,網頁做的亂七八糟,可以說不符合SEO友好性,存在排名很大程度是點擊加權,而非相關性,這樣快排有點波動就容易被干。
識別這種情況,可以在搜索詞后加個無關緊要的符號,比如「華為工資 。」
搜索引擎對用戶的Query,會先糾錯在分詞召回,糾錯過程就包含去除爛七八糟的符號,之后再排序。
but,「華為工資 。」這個詞的排序沒有點擊加權因素在里面,因為沒人點擊這個詞,同時這個符號對核心詞“華為工資”相關性排序的影響很低,因為每篇文檔都有一大堆句號。
所以你看「華為工資 。」與「華為工資」的排序,幾乎一樣的。但對比「seo 。」與「seo」的搜索結果,就非常奇妙了。
或者,也可以把主詞拆開來搜索,比如「華為工資 華為 工資」,或者輸入兩次「華為工資 華為工資」
海量核心詞排名
但如果有很多核心詞怎么辦?
比如某類詞根,如:
關于XXX的作文
{城市}公司
{古詩名稱}
....
long long time ago,本渣的做法是:
1)把這批詞,全部扔到百度搜索框,依次提取下拉框的詞
2)計算每個后綴的出現頻次
3)選擇頻次最高&標題完全命中關鍵詞搜索結果少的詞綴,作為網頁title的補充
舉個例子,比如{城市}公司,標題只寫「{XX}公司」,有些浪費,因為這個詞后面有人搜:
{XX}公司大全
{XX}公司名錄
{XX}公司黃頁
{XX}公司排行
{XX}公司排名
{XX}公司代辦
......
但是又不能所有后綴都加上,所以疑問是:添加哪個后綴,能大概率讓「{XX}公司」和「{XX}公司{后綴}」都有排名?
全國300多個縣級市,60%+城市,其下拉框都會出現“排名”,其實“名錄”、“黃頁”的出現頻次也不少,跟“排名”差不多,但是這兩個詞綴做的人太多了,也就是搜索結果標題完全命中的數量比較多,所以最后用了“排名”,即title為:“北京公司排名”
結果是,二三線城市差不多都上去了。
一線城市沒上去是因為,搜索需求太豐富,比如:代辦、搖號、轉讓...