首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Whoosh功能

Whoosh功能
EN

Stack Overflow用户
提问于 2014-05-31 22:21:05
回答 1查看 367关注 0票数 1

我有700多个小的,本地存储的文本文件(不超过2Kb大)。每个文件位于一个文件夹中,如:

  • 2012//05//18.txt
  • 2013//09/22.txt
  • 2014//11//29.txt

(每个文件代表一天)。

内容包含每日的“事件”信息。我感兴趣的是能够找到包含特定单词的文件。

  1. 文件能被批量索引吗?也就是说,可以编写python/whoosh代码来索引一组文件吗?
  2. 如果是这样的话,是否可以编写python脚本来搜索每个文件中的特定单词?
  3. 如果这不是whoosh的功能,或者如果whoosh对这样的任务过度消耗,那么还有什么能更好地完成这个任务呢?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-01 00:00:30

前言:我从来没有用过哇哦。我刚看了快速启动

似乎要完成这一任务是非常微不足道的。你要做的工作的关键是在这里:

代码语言:javascript
复制
writer.add_document(title=u"First document", path=u"/a", content=u"This is the first document we've added!")

这就是真正创建索引的地方。本质上,您需要做的似乎是使用类似os.walk的东西来爬行您的根目录,并填写数据,并为它找到的每个文件填写writer.add_document参数。

代码语言:javascript
复制
for root, dirs, files in os.walk("/your/path/to/logs"):
    for file in files:
        filepath = os.path.join(root, file)
        with open(filepath, 'r') as content_file:
            file_contents = content_file.read()
            writer.add_document(title=file, content=the_contents, path=filepath)

至少这是个起点。在此之后,使用Whoosh提供的Searcher运行索引文件似乎非常简单。

代码语言:javascript
复制
with ix.searcher() as searcher:
    query = QueryParser("content", ix.schema).parse("somesearchstring")
    results = searcher.search(query)
    print(results)

就像我说的,我从来没有用过,但是如果我是你,这就是我会做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23974979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档