您的位置:首页 > 编程语言 > Python开发

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应用程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐