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

本文详细介绍了使用Python构建搜索引擎的过程,包括工作原理、搜索算法及实际代码应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.pyURL行为。也许你需要修改URL,这样才能对映这搜索脚本在web服务器上所放的位置。之后,用户输入要搜索的词项,点击搜索按钮,数据(词项)被传给服务器的search.py脚本。这个脚本接收搜索词项后,开始实际的搜索,最后返回搜索结果。


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


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

    

<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/

    另外,我好像未经授权就翻译并发布了,没问题吧?要不要亡羊补牢下?疑问



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值