搜索引擎使用python为书签网站

时间:2014-03-08 17:34:19

标签: python search-engine

我的想法是根据我的书签文件构建一个搜索引擎,我有CSV格式。

这个想法背后的动机是我有大量与教育资源相关的书签,我希望能够搜索和查找特定主题或主题的相关内容。

我不是一个非常优秀的程序员(我可以用c ++和java编写简单的程序)并且最近开始学习python。

这个项目的实施是否可以在一个月内完成?

我搜索过并发现一个CSV模块存在于python语言中,我唯一可以得到的想法是使用python构建搜索引擎的udacity CS101课程。

我的问题是这是否可能以及从哪里开始?

2 个答案:

答案 0 :(得分:2)

我在Perl和Python中都实现了一个搜索引擎。第一个是匆忙组合生产问题,从概念到运行需要2个小时。我想开源最终版本,但不知道从哪里开始,因为它是为雇主完成的工作。无论如何,这是算法:

st={} #dictonary for search engine tree
for bokm in bookmarks:
    bokm=re.sub('\W_',' ',bokm).toupper() #filter out junk chars
    ct = st;   #cursor for traversing and building our tree
    for c in bokm.split():
        if not ct[c]: ct[c]={}
        ct = ct[c]

此时,您有一个包含书签的字符字典树。它只会从书签的开头找到匹配项,您可以修改算法以从任何单词开始哈希书签。一定要pprint.pprint(st)为自己看看它的美丽。

因此,假设您正在搜索并输入“dog”这个词:

def search(word, st):
    word=re.sub('\W_',' ',word).toupper() #pass word through same filter!
    ct = st #init our cursor
    for c in word.split():
        try:
            ct = ct[c]     #traverse the tree
        except KeyError:
            return False    #pattern diverged, no match
    return True #run out of word chars and every character matched. Found a match!

您可以将其插入并开始使用。它不会返回匹配的WHICH模式,您需要在搜索树分支的末尾记录它,并在最后一个搜索字符后递归遍历子树以打印匹配的所有书签。

PS:有许多可能的方法来实现单词搜索。这种方法的优点在于,无论书签文件的大小如何,它总能立即找到匹配项。第二个好处是可以修改search()以在键入时显示结果,每按一次键,因为它逐个字符地遍历我们的书签树,并且它将立即执行。

答案 1 :(得分:1)

是的 - 来自Udacity的CS101是一个很好的起点。我在1 - 2年前完成了这门课程。它可以指导您使用python构建搜索引擎。平均工作时间,您可以在约2周内完成课程。在了解了那里完成的工作后,您可以切换到书签输入。