我的想法是根据我的书签文件构建一个搜索引擎,我有CSV格式。
这个想法背后的动机是我有大量与教育资源相关的书签,我希望能够搜索和查找特定主题或主题的相关内容。
我不是一个非常优秀的程序员(我可以用c ++和java编写简单的程序)并且最近开始学习python。
这个项目的实施是否可以在一个月内完成?
我搜索过并发现一个CSV模块存在于python语言中,我唯一可以得到的想法是使用python构建搜索引擎的udacity CS101课程。
我的问题是这是否可能以及从哪里开始?
答案 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周内完成课程。在了解了那里完成的工作后,您可以切换到书签输入。