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



我的想法是建立一个基于我的书签文件,我在CSV格式的搜索引擎。

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

我不是一个很好的程序员(我可以用c++和java编写简单的程序),最近开始学习python。

是否有可能在一个月内实施该项目?

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

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

我在工作中用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]

至此,您有了一个包含书签的字符字典树。它只会从书签的开头找到匹配项,您可以修改算法以从任何单词开始的书签散列。一定要去print.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!

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

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

是的- Udacity的CS101是一个很好的起点。我在1-2年前完成了这门课。它可以指导您一步一步地使用python构建搜索引擎。以平均速度学习,你可以在2周内完成课程。在理解了这里所做的工作之后,您可以切换到书签输入。

最新更新