Create Your Own Search Engine with Python 用python創建你自己的搜索引擎(完)

         哈哈,最後一部分了,翻譯完成了耶!大笑
      最後這一部分分析的是js和css,還有總結。

         search.js

    用戶在獲得他們搜索的結果後,點擊搜索結果的某一鏈接,可以在那個頁面上看到他們搜索的詞項。爲了動態的高亮化處理結果中的搜索詞項,我們在瀏覽器中使用了JAVASCRIPT。我們已經知道必須在HTML頁面中引用的JAVASCRIPT的引用(reference),以及搜索結果頁面如何給URL增加參數。這些參數都會在search.js中用到。

    在search.js文件中有大量的處理過程,但是實際的搜索是在doSearchHighlight函數中完成的。下面是這函數的簡化版,完整版是在search.js文件中,是示例代碼的一部分。

    

function doSearchHighlight(bodyText, searchTerm)
{
   highlightStartTag = "<span class=\"searchterm\">";1
   highlightEndTag = "</span>";

   var newText = "";
   var i = -1;
   var lSearchTerm = searchTerm.toLowerCase();
   var lBodyText = bodyText.toLowerCase();

   while (bodyText.length > 0) {
      i = lBodyText.indexOf(lSearchTerm, i+1);
      if (i < 0) {
         newText += bodyText;
         bodyText = "";2
      } else {
         if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {3
            if (lBodyText.lastIndexOf("/script>", i) >=
                lBodyText.lastIndexOf("<script", i)) {4

               newText += bodyText.substring(0, i) + highlightStartTag +
                   bodyText.substr(i, searchTerm.length) + highlightEndTag;5
               bodyText = bodyText.substr(i + searchTerm.length);
               lBodyText = bodyText.toLowerCase();
               i = -1;5
            }
         }
      }
   }

   return newText;
}



       這個函數會遍歷整個HTML的文本,用span標籤把所有搜索詞項包裹起來1span標籤允許搜索結果以可配置的方式進行高亮化。另外,javascript需要處理找不到任何搜索詞項的情況2。在這個應用中本來不應該也不允許這樣做,不過,這是個很好的防禦性編程問題。因爲我們既不能替換掉HTML的標籤3 ,同時也不能在腳本標籤中編寫代碼4。所以如果我們發現了一個詞項,就要用特定的span標籤進行包裹5       

    這段javascript代碼可以動態地生成新的HTML標籤到頁面中。這些標籤不會出現在別的地方,也不會在你瀏覽HTML頁面代碼時顯示出來。它們只存在於內存中,是嚴格的臨時屬性。


           SearchResults.css

    如果javascript函數成功地運行了span標籤,searchterm就已經加到HTML文件中(原文肯定少了點東東,with the class searchterm 說不通,但是我實在不能確定是哪個)。只是這樣的話,並不會改變搜索詞項的格式(format)。我們可以在SearchResults.css文件中定義一個藍色字體、黃色背景色的配置。

.searchterm {
   color: blue;
   background-color: yellow;
}

    有很多種方式來編輯這個樣式表。搜索的詞項還可以是紅底大黑字神馬的。總之,在CSS中有太多的選項了。改其中一個值就可以影響到所有的搜索詞項。

  

      在真實的世界中運行這個應用程序吧!!!

    在命令行下用python處理器測試這個應用程序,這確實是個簡單易行的方法。不過,當你在web服務器上,把這個當作你網站的一部分時,還是要進行配置的。(又囉嗦了)它在任何支持CGIPYTHONHTTP服務器上都可以配置,無論是UNIX,WINDOWS還是MacOS。不同系統不同配置方式,但是有相同的指南。


      § 你必須修改BASE_DIR變量的值,指向HTML文件的目錄。

      § 你也許還要修改search.py腳本中SearchResults.html 的路徑。

      § 安裝PYTHONCGI

      § 記住,如果你要在一個UNIX環境下運行這個應用程序,可以讓search.py成可執行文件。

    下面,祝你一路順風,半路失蹤!!!


     總結!!!了!

   在這個示例中,我們可以看到如何把Python,Javascript,CSS,HTML結合到一起來爲你的web應用程序提供一個強大的搜索引擎。我們已經介紹了基礎的搜索模式,也瀏覽了CGI接口。其實,在示例的源代碼文檔中還有更多的信息、註釋和樣例代碼可以獲得。(剩下的工作就是自己完成的了)


    我希望這會是一個有用的、有教育價值的例子。你可以把這個的代碼搞到手,改改後就可以應用到自己的web應用程序上。你也可以通過編輯CSSHTML文件來改變程序的外觀,這樣就不用修改代碼,還可以添加新的特性,甚至是添加一個搜索索引到你的search.py腳本中。如果你想到什麼好的特性,可以聯繫我,我很樂意從你這兒看到思維的火花。( I would love to hear about them.這句還真不好寫

    

    本文檔中部分圖片來自Dr. E.F. Tymac。這些圖片都依照Creative Commons Attribution-ShareAlike 2.5 License發佈。


       PS:呃,貌似我自己還沒搞懂,因爲我在本地測試時沒得到結果,另外,我沒試過web應用程序。尷尬


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章