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

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

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

Create Your Own Search Engine with Python 

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

接上一篇,我自己分的部分,全挤一篇太长,本部分主要介绍工作原理和简单的搜索(查找)算法。原文地址:http://www.zackgrossbart.com/hackito/search-engine-python/

      

       它的工作原理

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

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

    这个示例程序包含一个示例搜索表单(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文件,才知道如何处理搜索要求。代码如下:

    

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

     


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


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

        

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


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


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

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

    另外,我好像未经授权就翻译并发布了,没问题吧?要不要亡羊补牢下?Create Your Own Search Engine with Python 用python创设你自己的搜索引擎(二)