Create Your Own Search Engine with Python 用python创建你自己的搜索引擎(完)
2012-08-22 21:12
639 查看
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标签把所有搜索词项包裹起来1。span标签允许搜索结果以可配置的方式进行高亮化。另外,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服务器上,把这个当作你网站的一部分时,还是要进行配置的。(又啰嗦了)它在任何支持CGI、PYTHON的HTTP服务器上都可以配置,无论是UNIX,WINDOWS还是MacOS。不同系统不同配置方式,但是有相同的指南。
§ 你必须修改BASE_DIR变量的值,指向HTML文件的目录。
§ 你也许还要修改search.py脚本中SearchResults.html 的路径。
§ 安装PYTHON和CGI
§ 记住,如果你要在一个UNIX环境下运行这个应用程序,可以让search.py成可执行文件。
下面,祝你一路顺风,半路失踪!!!
总结!!!了!
在这个示例中,我们可以看到如何把Python,Javascript,CSS,HTML结合到一起来为你的web应用程序提供一个强大的搜索引擎。我们已经介绍了基础的搜索模式,也浏览了CGI接口。其实,在示例的源代码文档中还有更多的信息、注释和样例代码可以获得。(剩下的工作就是自己完成的了)
我希望这会是一个有用的、有教育价值的例子。你可以把这个的代码搞到手,改改后就可以应用到自己的web应用程序上。你也可以通过编辑CSS、HTML文件来改变程序的外观,这样就不用修改代码,还可以添加新的特性,甚至是添加一个搜索索引到你的search.py脚本中。如果你想到什么好的特性,可以联系我,我很乐意从你这儿看到思维的火花。( I
would love to hear about them.这句还真不好写)
本文档中部分图片来自Dr. E.F. Tymac。这些图片都依照Creative Commons Attribution-ShareAlike 2.5 License发布。
PS:呃,貌似我自己还没搞懂,因为我在本地测试时没得到结果,另外,我没试过web应用程序。
相关文章推荐
- Create Your Own Search Engine with Python 用python创建你自己的搜索引擎(二)
- Create Your Own Search Engine with Python (一)
- Create Your Own Search Engine with Python
- 用Python和OpenCV创建一个图片搜索引擎的完整指南 The complete guide to building an image search engine with Python and
- Creating Your Own Document Management System With SharePoint 使用SharePoint创建你自己的文档管理系统
- Creating Your Own Document Management System With SharePoint 使用SharePoint创建你自己的文档管理系统
- Invent Your Own Computer Games with Python 翻译(四)“猜数字”(1)
- unity kinect2 怎么使用姿势或者使用你自己的How to Use Gestures or Create Your Own Ones
- python JSON API duckduckgo search engine 使用duckduckgo API 尝试搜索引擎
- 用你自己的插件扩展jQuery(Extend jQuery with Your Very Own Plugin)
- Invent Your Own Computer Games with Python 翻译(二)交互式Shell
- 用你自己的插件扩展jQuery(Extend jQuery with Your Very Own Plugin)
- 用你自己的插件扩展jQuery(Extend jQuery with Your Very Own Plugin)
- How to create your own home SVN repository with Xampp/Apache
- Invent Your Own Computer Games with Python 翻译(三)Strings
- Host Python In your Application with IronPython2.0.1 (一): 创建交互环境
- 用你自己的插件扩展jQuery(Extend jQuery with Your Very Own Plugin)
- Joomla! Template Design: Create your own professional-quality templates with this fast, friendly gui
- 用Python构建你自己的推荐系统(Implementing your own recommender systems in Python)
- [Vue + TS] Create your own Decorators in Vue with TypeScript