Lucene.net站內搜索—1、SEO優化


目錄

Lucene.net站內搜索—1、SEO優化
Lucene.net站內搜索—2、Lucene.Net簡介和分詞
Lucene.net站內搜索—3、最簡單搜索引擎代碼
Lucene.net站內搜索—4、搜索引擎第一版技術儲備(簡單介紹Log4Net、生產者消費者模式)
Lucene.net站內搜索—5、搜索引擎第一版實現
Lucene.net站內搜索—6、站內搜索第二版

聲明:在這里,所談的一切關於SEO的技術主要針對於我們開發人員。

SEO (搜索引擎優化)

SEO(搜索引擎優化)的目的(很多人都是通過搜索引擎找到我們的網站)是讓搜索引擎更多的收錄網站的頁面,讓被收錄頁面的權重更靠前,讓更多的人能夠通過搜索引擎進入這個網站

原理:蜘蛛會定時抓取網站的內容,發現網站內容變化、發現新增內容就反映到搜索引擎中

蜘蛛(spider) 爬網站:就是向網站發http get請求的客戶端。

SEO(搜索引擎優化*):讓網站排名靠前,讓網站更多的頁面被搜索引擎收錄。鏈接(外鏈、內鏈)、原創、關鍵詞的數量、權重,小偷網站(站群),降權(PR PageRank),K站(Kill站,作弊)、偽原創:

爬網站的過程:發現網站。百度把csdn當成關鍵網站,順着已知的網站鏈接找到新的網站或者新的頁面。

SEO的第一個手段:建外鏈(外部鏈接)。新網站吸引蜘蛛。對於非新網站,搜索引擎考慮一個“權重”,重點考察 外鏈數量。權重越高搜索結果越靠前,“權重”的一個重要因素就是“外鏈”數量,外鏈質量(外鏈網站的PR值,PageRank,決定一個網站的質量的 值,PR值越高網站越重要,原創、創建時間等等),Alexa 排名(全球網站排名)

(*)robots.txt是公約,搜索引擎都建議遵守,相當於一個指路牌:想讓那些搜索引擎搜索,想讓那些頁面搜索  Search engine optimization

開發時要考慮SEO

搜索引擎蜘蛛(Spider):向網站發出Get請求,獲得頁面內容,分析頁面中的超鏈接,進一步的向頁面中的超鏈接發Get請求,獲得鏈接的頁面內容。搜索引擎只認識<ahref=“”>,並且不能是JavaScript、超鏈接不能是js動態生成的

網站的SEO基本原則:所有希望搜索引擎抓取的內容都應該是通過超鏈接(Get請求)獲得的,Post獲得的內容、js腳本打開的頁面是無法被搜索引擎抓取的,所以盡量不要JS、Post來進行頁面導航、內容的生成。搜索引擎一般不會執行JS、不會發Post請求、不會提交表單。

動態菜單應該是把菜單內容靜態的寫到html中,然后通過隱藏、顯示來切換,而不是動態繪制菜單內容。車品匯的案例:在保證動態效果的前提下,考慮SEO。反例:某些校園網站

因為LinkButton是執行JavaScript向服務器發請求來進行Redirect,而蜘蛛不會執行JS,所以盡量不要用LinkButton。

內嵌js生成的超鏈接是搜索引擎看不到的。服務器端動態生成的內容是可以被蜘蛛看到的,客戶端瀏覽器(蜘蛛)不知道服務器是動態生成的還是靜態文 件,只有Response。蜘蛛只分析靜態的HTML內容,不會去執行JS。蜘蛛就是相當於發出Get請求的WebClient。禁用JS以后獲得的東西 就是蜘蛛能看到的東西。

SEO友好的AJAX:做一個簡單的根據參數來獲得1、2、3三個文章的AJAX效果,如下示例:

html代碼:

[javascript] view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <title></title>  
  5.     <script src="jquery-1.4.1.js" type="text/javascript"></script>  
  6.     <script type="text/javascript">  
  7.         function getart(id) {  
  8.             $.post("GetMsg.ashx", { "id": id }, function (data) {  
  9.                 $("#div1").html(data);  
  10.             });  
  11.         }  
  12.     </script>  
  13. </head>  
  14. <body>  
  15. <ul>  
  16.     <li><a href="GetMsg.ashx?id=1" onclick="getart(1);return false;">1</a></li>  
  17.     <li><a href="GetMsg.ashx?id=2" onclick="getart(2);return false;">2</a></li>  
  18.     <li><a href="GetMsg.ashx?id=3" onclick="getart(3);return false;">3</a></li>  
  19. </ul>  
  20. <div id="div1">  
  21. </div>  
  22. </body>  
  23. </html>  

一般處理程序代碼:

[csharp] view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1.   /// <summary>  
  2.     /// GetMsg 的摘要說明  
  3.     /// </summary>  
  4.     public class GetMsg : IHttpHandler  
  5.     {  
  6.         public void ProcessRequest(HttpContext context)  
  7.         {  
  8.             context.Response.ContentType = "text/plain";  
  9.             int id = Convert.ToInt32(context.Request["id"]);  
  10.             if (id == 1)  
  11.             {  
  12.                 context.Response.Write(@"搜索引擎蜘蛛(Spider):向網站發出Get請求,獲得頁面內容,分析頁面中的超鏈接,  
  13. 進一步的向頁面中的超鏈接發Get請求,獲得鏈接的頁面內容。");  
  14.             }  
  15.             else if(id==2)  
  16.             {  
  17.                 context.Response.Write(@"因為LinkButton是執行JavaScript向服務器發請求來進行Redirect,而蜘蛛不會執行JS,所以盡量不要用LinkButton。");  
  18.             }  
  19.             else if (id == 3)  
  20.             {  
  21.                 context.Response.Write(@"SEO友好的AJAX:做一個簡單的根據參數來獲得1、2、3三個文章的AJAX效果");  
  22.             }  
  23.         }  
  24.   
  25.         public bool IsReusable  
  26.         {  
  27.             get  
  28.             {  
  29.                 return false;  
  30.             }  
  31.         }  
  32.     }  

效果:

這樣就可以既實現ajax效果,又利於SEO優化了。

WebClient是下載Get請求的結果,而不是下載aspx源碼。

聊SEO的時候說的一個很牛的技巧:<a href=“GetArticle.ashx?Id=1” onclick=“ShowArticle(1);return false;”>文章1</a>,也對不支持JavaScript的瀏覽器提供友好的使用。

糗事百科的“評論”也是同時考慮AJAX和SEO的例子。

蜘蛛爬網原理代碼:

[csharp] view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. WebClient wc = new WebClient();  
  2.          string html = wc.DownloadString("http://www.baidu.com");  
  3.          //把html放入“數據庫”  
  4.          //分析html中的超鏈接 links  
  5.          //foreach(string link in links)  
  6.          //string html2 = wc.DownloadString(link);  

聊到SEO的話!!!

對於開發人員來講:搜索引擎只認get請求獲得的原始源代碼;只認頁面中的a標簽,並且不能是href=“javascript:”;

案例:不要是<ahref="javascript:document.location='http://www.baidu.com'" >百度</a>

不要用LinkButton的Onclick中來做Response.Redirect,因為生成的是js,請看如下代碼:

[html] view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>  

生成的html源碼如下:

[html] view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. <id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>  

不要在頁面中動態通過js生成超鏈接菜單,而應該像“車品匯”一樣先把鏈接都生成到頁面中,只是隱藏,然后通過js來控制不同層的顯示

實現AJAX,同時制定onclick和href,讓普通用戶走onclick的ajax效果,搜索引擎蜘蛛走href

關於搜索

開發百度用的是通用搜索,咱們主要做站內搜索。

有一定訪問量的互聯網站都有站內搜索功能,比如verycd、優酷、豆瓣、cnblogs、mop、淘寶、大眾點評網等。

msg like '%.net視頻教程%':模糊程度太低,無法匹配幾個關鍵詞不挨着的;造成全表掃描,效率低。

為什么不用數據庫全文檢索?數據庫全文檢索很傻瓜化,和普通SQL一樣。數據全文檢索靈活性不強。注意:要sqlserver的專業版才支持全文檢索功能。

使用sqlserver全文檢索步驟:

1、設置需要檢索的列屬性


2、全文檢索的查詢語法:select * from T where contains(msg,’你好’)

為什么不用百度、google的站內搜索(site:cnblogs.com):受制於人,會被K;索引不及時、不全面、不精准;用戶體驗感差

這里主要講解最有廣泛應用價值的站內搜索技術,像開發百度、google那種站外搜索相關的技術不講。

a、  搜索引擎 site:www.cnblogs.com 站內搜索

b、  查看網站收錄。site:www.verycd.com

當我們新建一個網站后,要想讓搜索引擎能夠收錄,我們要先將我們網址提交到各搜索引擎入口,一般提交2~3天后,你就可以在各搜索引擎中輸入關鍵字進行搜索了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM