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

来源:互联网 发布:网络监控工程宝怎么用 编辑:程序博客网 时间:2024/06/05 04:33
 

Create Your Own Search Engine with Python 

用python创建你自己的搜索引擎(完)

         哈哈,最后一部分了,翻译完成了耶!大笑
      最后这一部分分析的是js和css,还有总结。
      原文地址:http://www.zackgrossbart.com/hackito/search-engine-python/

         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应用程序。尴尬


原创粉丝点击