Shingle網(wǎng)頁去重算法對SEO聚合頁的影響
頁去重算法對SEO聚合頁的影響.jpg)
Shingle算法是搜索引擎去掉相同或相似頁面的其中一種基本算法,做SEO聚合頁面的時候如何讓頁面之間不重復?如何處理重復度的問題?可以反推Shingle算法得到一些啟發(fā)。
Shingle在英文中表示相互覆蓋的瓦片。先通過一個例子來說明Shingle算法:
假設(shè)有A、B兩個文檔的標題,A文檔的標題是:明起電話訂火車票可全國通取取票時間延12小時;B文檔的標題是:火車票電話訂票實現(xiàn)全國通取網(wǎng)上預(yù)售期延長。
搜索引擎如何知道這兩篇文檔標題是否是重復的?比如我們可以以2個漢字切為一個Shingle的方法:
對于長度L的文檔,每隔N個漢字切一個Shingle,這樣一共切到L-N+1個shingle,A文檔標題切成了L-N+1=21-2+1=20個Shingle,B文檔標題切成了L-N+1=20-2+1=19個Shingle。
A、B兩個文檔標題共同的Shingle有圖上7個加粗的:電話、話訂、火車、車票、全國、國通、通取。
A、 B兩個文檔標題一共有20+19-7=32個Shingle。
然而,A、B兩個文檔標題共同的Shingle,除以,A、B兩個文檔標題一共有的Shingle,就是這兩個文檔標題的Jaccard系數(shù),可以用來判斷A、B兩個文檔標題的相似度。
A、 B兩個文檔標題的Jaccard系數(shù)=7/(20+19-7)=0.21875
從兩個文檔的標題,可以延伸到兩個頁面文檔,再延伸到N個頁面,通過Jaccard系數(shù)是否達到相似所需要的標準來判斷頁面與頁面是否相似。
這就是Shingle算法,兩個集合的交集除以兩個集合的并集,得到Jaccard系數(shù),通過判斷Jaccard系數(shù)是否大于某個數(shù),來判斷兩個集合是否重復。
反推Shingle算法,如果Jaccard系數(shù)小于某個數(shù),就不重復了,先給每個文檔集合拆分成若干個Shingle,再兩兩計算Jaccard系數(shù),如果小于某個數(shù),生成頁面即可。
我之前做的一個項目使用的一個方法,雖然比較笨,也還算實用,分享一下:
假設(shè)北京電影品類有100個團購單子,現(xiàn)在要為下圖右邊這些詞設(shè)計聚合頁面,每個頁面展示10個單子,假設(shè)jaccard系數(shù)大于0.3判定為頁面重復,怎么生成不重復頁面?
如下圖展示單子的標題和長標題(假設(shè)seo聚合頁用的長標題,因為長標題文字不單一,文字量也大):
每個id是唯一的,每個id對應(yīng)的標題和長標題可以近似于唯一,那就可以簡化成允許相同id的單子數(shù)來解決重復的問題。
意思是,每個頁面展示10個單子,每兩個頁面不能有=3.33個id是一樣的,即兩兩頁面id比較,所有的id都不同可以頁面,只有1個id相同可以生成頁面,只有2個id相同可以生成頁面,只有3個id相同可以生成頁面,如果有大于等于4個id相同就不生成頁面。