29 | 堆的應用:如何快速獲取到Top 10的搜索關鍵詞?

2020-12-03 xiuxiuing

加關注可以第一時間接收數據結構系列文章,覺得不錯可以轉發和點讚,謝謝支持

搜尋引擎的熱門搜索排行榜功能你用過嗎?你知道這個功能是如何實現的嗎?實際上,它的實現並不複雜。搜尋引擎每天會接收大量的用戶搜索請求,它會把這些用戶輸入的搜索關鍵詞記錄下來,然後再離線地統計分析,得到最熱門的 Top 10 搜索關鍵詞。

那請你思考下,假設現在我們有一個包含 10 億個搜索關鍵詞的日誌文件,如何能快速獲取到熱門榜 Top 10 的搜索關鍵詞呢?

這個問題就可以用堆來解決,這也是堆這種數據結構一個非常典型的應用。上一節我們講了堆和堆排序的一些理論知識,今天我們就來講一講,堆這種數據結構幾個非常重要的應用:優先級隊列、求 Top K 和求中位數。

堆的應用一:優先級隊列

首先,我們來看第一個應用場景:優先級隊列。

優先級隊列,顧名思義,它首先應該是一個隊列。我們前面講過,隊列最大的特性就是先進先出。不過,在優先級隊列中,數據的出隊順序不是先進先出,而是按照優先級來,優先級最高的,最先出隊。

如何實現一個優先級隊列呢?方法有很多,但是用堆來實現是最直接、最高效的。這是因為,堆和優先級隊列非常相似。一個堆就可以看作一個優先級隊列。很多時候,它們只是概念上的區分而已。往優先級隊列中插入一個元素,就相當於往堆中插入一個元素;從優先級隊列中取出優先級最高的元素,就相當於取出堆頂元素。

你可別小看這個優先級隊列,它的應用場景非常多。我們後面要講的很多數據結構和算法都要依賴它。比如,赫夫曼編碼、圖的最短路徑、最小生成樹算法等等。不僅如此,很多語言中,都提供了優先級隊列的實現,比如,Java 的 PriorityQueue,C++ 的 priority_queue 等。

只講這些應用場景比較空泛,現在,我舉兩個具體的例子,讓你感受一下優先級隊列具體是怎麼用的。

1. 合併有序小文件

假設我們有 100 個小文件,每個文件的大小是 100MB,每個文件中存儲的都是有序的字符串。我們希望將這些 100 個小文件合併成一個有序的大文件。這裡就會用到優先級隊列。

整體思路有點像歸併排序中的合併函數。我們從這 100 個文件中,各取第一個字符串,放入數組中,然後比較大小,把最小的那個字符串放入合併後的大文件中,並從數組中刪除。

假設,這個最小的字符串來自於 13.txt 這個小文件,我們就再從這個小文件取下一個字符串,並且放到數組中,重新比較大小,並且選擇最小的放入合併後的大文件,並且將它從數組中刪除。依次類推,直到所有的文件中的數據都放入到大文件為止。

這裡我們用數組這種數據結構,來存儲從小文件中取出來的字符串。每次從數組中取最小字符串,都需要循環遍歷整個數組,顯然,這不是很高效。有沒有更加高效方法呢?

這裡就可以用到優先級隊列,也可以說是堆。我們將從小文件中取出來的字符串放入到小頂堆中,那堆頂的元素,也就是優先級隊列隊首的元素,就是最小的字符串。我們將這個字符串放入到大文件中,並將其從堆中刪除。然後再從小文件中取出下一個字符串,放入到堆中。循環這個過程,就可以將 100 個小文件中的數據依次放入到大文件中。

我們知道,刪除堆頂數據和往堆中插入數據的時間複雜度都是 O(logn),n 表示堆中的數據個數,這裡就是 100。是不是比原來數組存儲的方式高效了很多呢?

2. 高性能定時器

假設我們有一個定時器,定時器中維護了很多定時任務,每個任務都設定了一個要觸發執行的時間點。定時器每過一個很小的單位時間(比如 1 秒),就掃描一遍任務,看是否有任務到達設定的執行時間。如果到達了,就拿出來執行。

但是,這樣每過 1 秒就掃描一遍任務列表的做法比較低效,主要原因有兩點:第一,任務的約定執行時間離當前時間可能還有很久,這樣前面很多次掃描其實都是徒勞的;第二,每次都要掃描整個任務列表,如果任務列表很大的話,勢必會比較耗時。

針對這些問題,我們就可以用優先級隊列來解決。我們按照任務設定的執行時間,將這些任務存儲在優先級隊列中,隊列首部(也就是小頂堆的堆頂)存儲的是最先執行的任務。

這樣,定時器就不需要每隔 1 秒就掃描一遍任務列表了。它拿隊首任務的執行時間點,與當前時間點相減,得到一個時間間隔 T。

這個時間間隔 T 就是,從當前時間開始,需要等待多久,才會有第一個任務需要被執行。這樣,定時器就可以設定在 T 秒之後,再來執行任務。從當前時間點到(T-1)秒這段時間裡,定時器都不需要做任何事情。

當 T 秒時間過去之後,定時器取優先級隊列中隊首的任務執行。然後再計算新的隊首任務的執行時間點與當前時間點的差值,把這個值作為定時器執行下一個任務需要等待的時間。

這樣,定時器既不用間隔 1 秒就輪詢一次,也不用遍歷整個任務列表,性能也就提高了。

堆的應用二:利用堆求 Top K

剛剛我們學習了優先級隊列,我們現在來看,堆的另外一個非常重要的應用場景,那就是「求 Top K 問題」。

我把這種求 Top K 的問題抽象成兩類。一類是針對靜態數據集合,也就是說數據集合事先確定,不會再變。另一類是針對動態數據集合,也就是說數據集合事先並不確定,有數據動態地加入到集合中。

針對靜態數據,如何在一個包含 n 個數據的數組中,查找前 K 大數據呢?我們可以維護一個大小為 K 的小頂堆,順序遍歷數組,從數組中取出取數據與堆頂元素比較。如果比堆頂元素大,我們就把堆頂元素刪除,並且將這個元素插入到堆中;如果比堆頂元素小,則不做處理,繼續遍歷數組。這樣等數組中的數據都遍歷完之後,堆中的數據就是前 K 大數據了。

遍歷數組需要 O(n) 的時間複雜度,一次堆化操作需要 O(logK) 的時間複雜度,所以最壞情況下,n 個元素都入堆一次,所以時間複雜度就是 O(nlogK)。

針對動態數據求得 Top K 就是實時 Top K。怎麼理解呢?我舉一個例子。一個數據集合中有兩個操作,一個是添加數據,另一個詢問當前的前 K 大數據。

如果每次詢問前 K 大數據,我們都基於當前的數據重新計算的話,那時間複雜度就是 O(nlogK),n 表示當前的數據的大小。實際上,我們可以一直都維護一個 K 大小的小頂堆,當有數據被添加到集合中時,我們就拿它與堆頂的元素對比。如果比堆頂元素大,我們就把堆頂元素刪除,並且將這個元素插入到堆中;如果比堆頂元素小,則不做處理。這樣,無論任何時候需要查詢當前的前 K 大數據,我們都可以裡立刻返回給他。

堆的應用三:利用堆求中位數

前面我們講了如何求 Top K 的問題,現在我們來講下,如何求動態數據集合中的中位數。

中位數,顧名思義,就是處在中間位置的那個數。如果數據的個數是奇數,把數據從小到大排列,那第 n2+1 個數據就是中位數;如果數據的個數是偶數的話,那處於中間位置的數據有兩個,第 n2 個和第 n2+1 個數據,這個時候,我們可以隨意取一個作為中位數,比如取兩個數中靠前的那個,就是第 n2 個數據。

對於一組靜態數據,中位數是固定的,我們可以先排序,第 n2 個數據就是中位數。每次詢問中位數的時候,我們直接返回這個固定的值就好了。所以,儘管排序的代價比較大,但是邊際成本會很小。但是,如果我們面對的是動態數據集合,中位數在不停地變動,如果再用先排序的方法,每次詢問中位數的時候,都要先進行排序,那效率就不高了。

藉助堆這種數據結構,我們不用排序,就可以非常高效地實現求中位數操作。我們來看看,它是如何做到的?

我們需要維護兩個堆,一個大頂堆,一個小頂堆。大頂堆中存儲前半部分數據,小頂堆中存儲後半部分數據,且小頂堆中的數據都大於大頂堆中的數據。

也就是說,如果有 n 個數據,n 是偶數,我們從小到大排序,那前 n2 個數據存儲在大頂堆中,後 n2 個數據存儲在小頂堆中。這樣,大頂堆中的堆頂元素就是我們要找的中位數。如果 n 是奇數,情況是類似的,大頂堆就存儲 n2+11 個數據,小頂堆中就存儲 n2 個數據。

我們前面也提到,數據是動態變化的,當新添加一個數據的時候,我們如何調整兩個堆,讓大頂堆中的堆頂元素繼續是中位數呢?

如果新加入的數據小於等於大頂堆的堆頂元素,我們就將這個新數據插入到大頂堆;如果新加入的數據大於等於小頂堆的堆頂元素,我們就將這個新數據插入到小頂堆。

這個時候就有可能出現,兩個堆中的數據個數不符合前面約定的情況:如果 n 是偶數,兩個堆中的數據個數都是 n2;如果 n 是奇數,大頂堆有 n2+1 個數據,小頂堆有 n2 個數據。這個時候,我們可以從一個堆中不停地將堆頂元素移動到另一個堆,通過這樣的調整,來讓兩個堆中的數據滿足上面的約定。

於是,我們就可以利用兩個堆,一個大頂堆、一個小頂堆,實現在動態數據集合中求中位數的操作。插入數據因為需要涉及堆化,所以時間複雜度變成了 O(logn),但是求中位數我們只需要返回大頂堆的堆頂元素就可以了,所以時間複雜度就是 O(1)。

實際上,利用兩個堆不僅可以快速求出中位數,還可以快速求其他百分位的數據,原理是類似的。還記得我們在「為什麼要學習數據結構與算法」裡的這個問題嗎?「如何快速求接口的 99% 響應時間?」我們現在就來看下,利用兩個堆如何來實現。

在開始這個問題的講解之前,我先解釋一下,什麼是「99% 響應時間」。

中位數的概念就是將數據從小到大排列,處於中間位置,就叫中位數,這個數據會大於等於前面 50% 的數據。99 百分位數的概念可以類比中位數,如果將一組數據從小到大排列,這個 99 百分位數就是大於前面 99% 數據的那個數據。

如果你還是不太理解,我再舉個例子。假設有 100 個數據,分別是 1,2,3,……,100,那 99 百分位數就是 99,因為小於等於 99 的數佔總個數的 99%。

弄懂了這個概念,我們再來看 99% 響應時間。如果有 100 個接口訪問請求,每個接口請求的響應時間都不同,比如 55 毫秒、100 毫秒、23 毫秒等,我們把這 100 個接口的響應時間按照從小到大排列,排在第 99 的那個數據就是 99% 響應時間,也叫 99 百分位響應時間。

我們總結一下,如果有 n 個數據,將數據從小到大排列之後,99 百分位數大約就是第 n*99% 個數據,同類,80 百分位數大約就是第 n*80% 個數據。

弄懂了這些,我們再來看如何求 99% 響應時間。

我們維護兩個堆,一個大頂堆,一個小頂堆。假設當前總數據的個數是 n,大頂堆中保存 n*99% 個數據,小頂堆中保存 n*1% 個數據。大頂堆堆頂的數據就是我們要找的 99% 響應時間。

每次插入一個數據的時候,我們要判斷這個數據跟大頂堆和小頂堆堆頂數據的大小關係,然後決定插入到哪個堆中。如果這個新插入的數據比大頂堆的堆頂數據小,那就插入大頂堆;如果這個新插入的數據比小頂堆的堆頂數據大,那就插入小頂堆。

但是,為了保持大頂堆中的數據佔 99%,小頂堆中的數據佔 1%,在每次新插入數據之後,我們都要重新計算,這個時候大頂堆和小頂堆中的數據個數,是否還符合 99:1 這個比例。如果不符合,我們就將一個堆中的數據移動到另一個堆,直到滿足這個比例。移動的方法類似前面求中位數的方法,這裡我就不囉嗦了。

通過這樣的方法,每次插入數據,可能會涉及幾個數據的堆化操作,所以時間複雜度是 O(logn)。每次求 99% 響應時間的時候,直接返回大頂堆中的堆頂數據即可,時間複雜度是 O(1)。

解答開篇

學懂了上面的一些應用場景的處理思路,我想你應該能解決開篇的那個問題了吧。假設現在我們有一個包含 10 億個搜索關鍵詞的日誌文件,如何快速獲取到 Top 10 最熱門的搜索關鍵詞呢?

處理這個問題,有很多高級的解決方法,比如使用 MapReduce 等。但是,如果我們將處理的場景限定為單機,可以使用的內存為 1GB。那這個問題該如何解決呢?

因為用戶搜索的關鍵詞,有很多可能都是重複的,所以我們首先要統計每個搜索關鍵詞出現的頻率。我們可以通過散列表、平衡二叉查找樹或者其他一些支持快速查找、插入的數據結構,來記錄關鍵詞及其出現的次數。

假設我們選用散列表。我們就順序掃描這 10 億個搜索關鍵詞。當掃描到某個關鍵詞時,我們去散列表中查詢。如果存在,我們就將對應的次數加一;如果不存在,我們就將它插入到散列表,並記錄次數為 1。以此類推,等遍歷完這 10 億個搜索關鍵詞之後,散列表中就存儲了不重複的搜索關鍵詞以及出現的次數。

然後,我們再根據前面講的用堆求 Top K 的方法,建立一個大小為 10 的小頂堆,遍歷散列表,依次取出每個搜索關鍵詞及對應出現的次數,然後與堆頂的搜索關鍵詞對比。如果出現次數比堆頂搜索關鍵詞的次數多,那就刪除堆頂的關鍵詞,將這個出現次數更多的關鍵詞加入到堆中。

以此類推,當遍歷完整個散列表中的搜索關鍵詞之後,堆中的搜索關鍵詞就是出現次數最多的 Top 10 搜索關鍵詞了。

不知道你發現了沒有,上面的解決思路其實存在漏洞。10 億的關鍵詞還是很多的。我們假設 10 億條搜索關鍵詞中不重複的有 1 億條,如果每個搜索關鍵詞的平均長度是 50 個字節,那存儲 1 億個關鍵詞起碼需要 5GB 的內存空間,而散列表因為要避免頻繁衝突,不會選擇太大的裝載因子,所以消耗的內存空間就更多了。而我們的機器只有 1GB 的可用內存空間,所以我們無法一次性將所有的搜索關鍵詞加入到內存中。這個時候該怎麼辦呢?

我們在哈希算法那一節講過,相同數據經過哈希算法得到的哈希值是一樣的。我們可以哈希算法的這個特點,將 10 億條搜索關鍵詞先通過哈希算法分片到 10 個文件中。

具體可以這樣做:我們創建 10 個空文件 00,01,02,……,09。我們遍歷這 10 億個關鍵詞,並且通過某個哈希算法對其求哈希值,然後哈希值同 10 取模,得到的結果就是這個搜索關鍵詞應該被分到的文件編號。

對這 10 億個關鍵詞分片之後,每個文件都只有 1 億的關鍵詞,去除掉重複的,可能就只有 1000 萬個,每個關鍵詞平均 50 個字節,所以總的大小就是 500MB。1GB 的內存完全可以放得下。

我們針對每個包含 1 億條搜索關鍵詞的文件,利用散列表和堆,分別求出 Top 10,然後把這個 10 個 Top 10 放在一塊,然後取這 100 個關鍵詞中,出現次數最多的 10 個關鍵詞,這就是這 10 億數據中的 Top 10 最頻繁的搜索關鍵詞了。

內容小結

我們今天主要講了堆的幾個重要的應用,它們分別是:優先級隊列、求 Top K 問題和求中位數問題。

優先級隊列是一種特殊的隊列,優先級高的數據先出隊,而不再像普通的隊列那樣,先進先出。實際上,堆就可以看作優先級隊列,只是稱謂不一樣罷了。求 Top K 問題又可以分為針對靜態數據和針對動態數據,只需要利用一個堆,就可以做到非常高效率的查詢 Top K 的數據。求中位數實際上還有很多變形,比如求 99 百分位數據、90 百分位數據等,處理的思路都是一樣的,即利用兩個堆,一個大頂堆,一個小頂堆,隨著數據的動態添加,動態調整兩個堆中的數據,最後大頂堆的堆頂元素就是要求的數據。

相關焦點

  • 關鍵詞搜索指數是什麼?如何提升自然搜索排名上首頁?
    網站想要獲取好的排名,一定離不開關鍵詞的優化!因為所有的SEO優化工作都圍繞一個不變的主題:關鍵詞的選擇和布局!所以,如何挑選、分析關鍵詞,需要深入挖掘用戶的需求和網站的特性。如何分析關鍵詞?我們需要了解用戶都是通過搜索什麼關鍵詞進入網站?目標用戶的使用習慣是什麼?就比如有人習慣說關鍵字,有人習慣說關鍵詞,其實可能意思都一樣,但是因為個人的習慣不同,而會有不同的展現。我們通過百度站長工具裡可以有詳細記錄目標用戶群體常用到的關鍵詞,這個是百度提供給站長的專屬工具。只要綁定站點後,即可實時記錄,比如關鍵詞的展現量和點擊量、網站的索引量等。
  • 地圖標註後怎麼快速通過關鍵詞搜索到?
    搜索地區關鍵詞,在百度首頁出現地圖。比如:搜索「北京量販KTV」在地圖右側出現你們公司,並且在百度網頁搜索首頁,1-5天審核通過。 百度地圖是作為目前國內使用率最高的網絡產品,隨著百度與普通網民的使用粘度不斷增強而日漸成為出行路線規劃、尋找目的地、搜索旅遊、餐飲、消費興趣點的必備工具之一。
  • 如何查看網站關鍵詞排名在Google的第幾位
    外貿增長官致力於分享主低成本獲客、幫助外貿企業快速增長的技能,包括快速建站、SEO、視頻營銷等... 2019-12-06 17:18
  • 亞馬遜關鍵詞排名如何快速提升?這些方法千萬別錯過!
    但是,有些賣家類目排名頁面表現的都很一般,但關鍵詞搜索排名很靠前,他們是如何做到的呢? 下面我用實際案例給大家分享,如何有效的快速提升亞馬遜關鍵詞排名,關鍵詞要怎麼優化才能進入排名靠前的行列。 一、提高亞馬遜關鍵詞排名 1.1 掌握亞馬遜新算法 Amazon一直期望新增賣家數量進而促進競爭,這是推動平臺創新源源不斷的動力。
  • Google搜索廣告如何拓展獨立站信息,獲取高質詢盤?
    19:30 谷歌搜索廣告就是當用戶對某些相關關鍵詞進行搜索時,對應的搜索廣告結果就會展示出來,廣告主對關鍵詞的設定有多種匹配形式,相匹配且質量較高的廣告就會更容易被搜索展示。
  • 蒙特卡洛樹搜索在黑盒優化和神經網絡結構搜索中的應用
    其核心思想是同樣追蹤當下 top samples,然後用 top samples 來更新 μ 和 σ,而不是像 evolution 裡只把 μ 改到了當下最優的 sample 上。所以這裡的採樣區間會動態的變化,特別是 top samples 分布比較分散的話,採樣區間就會很大。
  • 淘寶電商運營 搜尋引擎原理全解析+關鍵詞抓取與組合
    關鍵詞數據含義搜索人氣:不同IP 搜索的次數搜索人數佔比:當前搜索詞根下 搜索這個詞佔的比率搜索熱度:根據用於搜索行為數擬合出的指數類指標。搜索熱度越高,表示搜索行為越多【計算重複IP】點擊率:用戶搜索後點擊商品的點擊數/用戶搜索行為數。商城點擊佔比:點擊天貓店鋪寶貝的次數/點擊所有(天貓店鋪+淘寶店鋪)寶貝的次數。商城點擊越高 對C店 越不佔優勢在線商品數:當前淘寶主搜商品包含目標關鍵詞的在線商品數。
  • 蛋白組學/代謝組學如何快速從主流資料庫中獲取人/小鼠數據?
    隨著生物科技的迅速發展,每天都會有海量的生物學數據產生,如何有效的分析這些「生物學大數據」?生物信息學的應用變得尤為重要,在生物領域從基因測序,到基因編輯,再到基因療法的精準醫療,由生物科技引發的又一場變革正悄然而至。試問大家做好準備迎接它到來了嗎? 本次分享的主題為:如何快速獲取海量數據?
  • 蛋白組學/代謝組學如何快速從主流資料庫中獲取人/小鼠數據?
    隨著生物科技的迅速發展,每天都會有海量的生物學數據產生,如何有效的分析這些「生物學大數據」?生物信息學的應用變得尤為重要,在生物領域從基因測序,到基因編輯,再到基因療法的精準醫療,由生物科技引發的又一場變革正悄然而至。試問大家做好準備迎接它到來了嗎?本次分享的主題為:如何快速獲取海量數據?
  • 亞馬遜關鍵詞怎麼抓取 如何寫好亞馬遜標題
    一個優秀的標題是打造爆款的重要因素,也是買家搜索到你產品直接流量來源,針對一個新產品listing,關鍵詞永遠是最重要的影響因素。首先要知道標題組成要素正常一個完整的listing標題在產品發布時候重中之重,當然最重要的關鍵詞選擇問題,關於如何選擇keyword,後期會有專題來講講,這裡先聊標題的構成需要基本要素。
  • SEO關鍵詞研究 | 網際網路數據資訊網-199IT | 中文網際網路數據研究...
    開始關鍵詞研究是要了解用戶搜索信息時使用那些詞語,通常包括了解關鍵詞的搜索量,以及這些詞的競爭情況關鍵詞研究是搜尋引擎優化和搜索營銷關鍵的一個環節。因為如果使用正確,他能夠幫我們在開發網站和構建內容時提供路徑。根據搜索查詢的數量,關鍵詞可以分類為頭部,主體,長尾。一般而言,關鍵詞的詞越多,競爭相對沒有那麼激烈,也比較容易獲得好的排名
  • 秘樂短視頻,如何快速獲取秘豆變現?
    秘樂短視頻,如何快速獲取秘豆變現? 來源:www.18183.com作者:阿姆斯特朗雷時間:2020-05-21 分享到: 用悟空多開分身,可以同時多帳號登錄,快速獲取秘豆實現收益成倍增長。
  • 【亞馬遜排名算法揭秘】搜索加購為什麼能提升關鍵詞排名?
    籠統的說,搜索的目的就是根據用戶輸入的關鍵詞展現出符合用戶需求的結果,也就是說優先展示與用戶搜索詞相關的產品或結果。這句話很重要,任何搜索都是這個原理。 先思考幾個問題: 1、為什麼開廣告能提升關鍵詞排名? 2、為什麼刷單能提升關鍵詞排名? 3、listing完全不包含的詞也能做出排名? 4、為什麼關鍵詞上首頁服務能實現上首頁?
  • 如何快速排名熱度詞(幾十萬指數的關鍵詞)!
    其實這個排名技術,就是針對熱度詞進行展開的,我們知道,新聞類的詞彙,剛出來的時候,只有幾家新聞網在競爭,而且文章質量做的也是比較差的,如果我們可以快速尋找到新聞熱點,是不是很快就可以達到成功的效果那?這個是當然了,下面就來詳細講解這篇教程!
  • 搜索「萬花筒」
    一旦這些詞句出現在搜索框內,各類搜尋引擎的結果前列會即時閃現出一些網站的身影。正是憑藉內容與用戶需求的直接匹配,送禮電子商務網站贏得了廣泛關注,並從中直接獲取了大量定單,真可謂「滑鼠一點,黃金萬兩」。北京諾博特信息技術有限公司的聯合創始人周源很早就注意到了這一現象,「當用戶在搜尋引擎中主動搜索某個關鍵詞時,承載業務的網站能否在前幾頁出現,並滿足他的期待與欲望,就成為在網際網路上開展業務的公司的一項關鍵競爭力。甚至毫不誇張地講,如果3頁之內都不能露面,被人關注的可能性極低。」
  • 如何設置有效的YouTube關鍵詞,讓你的視頻營銷更加成功
    2)使用付費工具來獲取YouTube的搜索數據 給大家推薦這個查詢工具,一天可以3次免費查詢。 Rank從1-10,1代表這個關鍵詞在YouTube上面搜索頻率較高,也是比較流行的,而10就表示有較少有人搜索這個內容。
  • 如何轉換搜索流量以提高投資回報率?
    在搜尋引擎(例如百度)中搜索某些關鍵詞,然後,搜尋引擎根據其眾多算法,為該查詢確定最佳和最相關的頁面,並將結果返回給搜索者。現在,尋找信息的人可以點擊任何這些結果。如您所見,此過程中存在一定數量的隨機性。如果搜索者已經知道您的網站或品牌,則可以單擊您的網站。但是,如果他不了解您的業務,就不會這樣處理,這會導致轉換率低和跳出率高。
  • 2020年關鍵字研究操作指南及關鍵詞公式
    你可以選擇長尾SEO關鍵字,而不是選擇競爭激烈的短尾SEO關鍵字,例如「如何賺錢」,「如何在家中在線賺錢」或「如何在社交媒體上賺錢」。排名可以訪問選擇與體面搜索量競爭力較弱的關鍵字,從而可以在你的網站上吸引大量用戶。而且,與短尾關鍵字相比,長尾關鍵字結果具有較高的轉換率。 注意事項: 根據搜索需求曲線,搜索流量的70%來自長尾關鍵詞。這些是非常具體的4-6個詞組。
  • 百度搜索都是廣告!不如試試這幾個搜尋引擎
    大家在用百度搜索時,常常搜索一些關鍵詞後出現的詞目,前幾條都是廣告這些廣告,都是後面的商家競價排名在百度買的,也就是說,只要有錢就行,管他什麼質量好與壞!主要說的就是百度搜索出來的內容營銷號太多,還主要是自家的產品——百家號如果爆哥要搜索一條新聞或者娛樂八卦的話,第一步想看的是專業的新聞報導或者八卦的出處,然而百度給我看到的是自己產品的營銷號內容,是經過二次甚至多次加工,顯然這無法讓我們得到有價值的信息那麼,如何屏蔽這些營銷號信息呢很簡單,在搜索關鍵詞後面加上「 -baijiahao」即可
  • 如何快速寫完一篇畢業論文
    ①給了範圍,可以在百度搜索裡面搜某某學科畢業論文題目,會有很多題目。②沒有方向的同學可以直接在百度學術等網站搜索自己想要研究的關鍵詞,標題大概就是淺析...淺談...論...研究...3>0penAccessLibrary:http://www.oalib.com/<4>libraRyGenesis:http://gen.lib.rus.ec/3如何翻譯(通常會有外文文獻翻的要求①WPS可以直接翻譯PDF文檔,但是對非會員有限制②翻譯狗http://www.fanyigou.net有免費和付費兩種方式,可以通過邀請等賺取積分