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

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

2012-08-21 23:41 701 查看
Create Your Own Search Engine with Python
用python创建你自己的搜索引擎(二)
接上一篇,我自己分的部分,全挤一篇太长,本部分主要介绍工作原理和简单的搜索(查找)算法。原文地址:http://www.zackgrossbart.com/hackito/search-engine-python/

它的工作原理

这个应用程序是四种技术(这里又是四种了哦!)的结合。一些代码运行在你的服务器上,另一些则是运行在浏览器上。所以,要记住你在构建代码时,代码运行所处的context。



这个示例程序包含一个示例搜索表单(search form)——Search.html。你可以把这个文件修改成你想要的样子,但是必须确保表单控制端(form controls)的名字保持相同。这个表单指定/cgi-bin/search.py的URL行为。也许你需要修改URL,这样才能对映这搜索脚本在web服务器上所放的位置。之后,用户输入要搜索的词项,点击搜索按钮,数据(词项)被传给服务器的search.py脚本。这个脚本接收搜索词项后,开始实际的搜索,最后返回搜索结果。

搜索结果页面是基于SearchResults.html文件生成的。这个HTML文件一定要和search.py脚本放在同一目录下,它包含两个特殊的值${SEARCH_TERMS_GO_HERE} 和${SEARCH_RESULTS_GO_HERE} (那个应该是JSP的语法吧?没学过)。这俩值会分别被搜索词和搜索结果替换。(下一句毫无预兆地跳转,貌似是外国佬的风格)每条搜索结果都包含了一个超链接,链接到那些包含用户搜索词项的网页,另外结果中还包含一些特殊的信息,JavaScript可以根据这些信息在这些页面中对搜索词进行高亮标记。当用户点击任一链接,他们会进入链接的HTML页面,里面包含用户指定的搜索词项,并且页面中所有的搜索词项都进行了高亮处理。

具备高亮功能的页面一定会有一段小小的code reference(代码引用?)。在每个HTML文件的开头,都要导入Javascript和CSS文件,才知道如何处理搜索要求。代码如下:

<script type="text/javascript" src="../search.js" />
<style type="text/css" media="all">
@import "../SearchResults.css";
</style>


这些文件内嵌了javascript来搜索页面,还包含样式单(style sheet)负责说明词项如何进行高亮。除了要导入代码,还必须运行程序。运行的代码会响应主体标志产生的装载事件(onload event)。这个声明非常简单。代码如下:

<body onload="doSearch();">


这段代码会在页面装入时运行,于是就得到高亮处理的搜索词项。

普遍使用的搜索算法和这个使用的算法

Donald Knuth 所著Sorting and Searching是我最早读的编程书之一(这书这么难的居然是最早读的,我现在还不敢读呢……)。这本大部头讨论了影响最深远的编程问题之一——查找(search 查找?搜索?检索?)的主要方法。从根本上来说,查找是非常困难的问题,也存在着多种不同的查找算法。这个程序使用的顺序查找(线性查找?),又是基础中的基础。顺序查找意味着该程序就是简单地把文件一个个打开,在里面查找词项,找完后关闭文件。(再转一次,实际上应该是另一段的开头)另外,我们的程序没有创建任何类型的搜索索引。

搜索索引可能是个文件,也可能是数据集,总之会在搜索之前创建。索引会将所有你可能搜索到的项,以某种格式——通常会以某种有用的方式排序(比如树)——进行相连,这样可以快速地进行查找。构建搜索索引主要用于处理大数据集合,这里我们需要高效、优越的性能。不过,在处理小数据集合时,顺序检索反而会更快。我们的这个程序就使用了可用的查找算法中的一种。

下一部分开始分析实际代码了。

原文:http://www.zackgrossbart.com/hackito/search-engine-python/

另外,我好像未经授权就翻译并发布了,没问题吧?要不要亡羊补牢下?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐