一个小的搜索库。
microsearch的Python项目详细描述
一个小的搜索库。
主要目的是作为一个学习工具来教授搜索的基础知识。
对于嵌入到不需要的python应用程序中非常有用 像lucene一样复杂。
我(即将)2012年pycon谈话的一部分-https://us.pycon.org/2012/schedule/presentation/66/
要求
- python 2.5+或python 3.2+
- (可选)simplejson
- (可选)unittest2(python 2.5-用于运行测试)
用法
示例:
import microsearch # Create an instance, pointing it to where the data should be stored. ms = microsearch.Microsearch('/tmp/microsearch') # Index some data. ms.index('email_1', {'text': "Peter,\n\nI'm going to need those TPS reports on my desk first thing tomorrow! And clean up your desk!\n\nLumbergh"}) ms.index('email_2', {'text': 'Everyone,\n\nM-m-m-m-my red stapler has gone missing. H-h-has a-an-anyone seen it?\n\nMilton'}) ms.index('email_3', {'text': "Peter,\n\nYeah, I'm going to need you to come in on Saturday. Don't forget those reports.\n\nLumbergh"}) ms.index('email_4', {'text': 'How do you feel about becoming Management?\n\nThe Bobs'}) # Search on it. ms.search('Peter') ms.search('tps report')
缺点
这个图书馆是用来帮助别人学习的。虽然它有完整的测试覆盖范围, 可能不适合生产使用。你可能不想使用它的原因 实际代码(TM):
- 无并发支持
- 尝试以原子方式处理文件
- 但是没有锁
- 因此,写入操作可能在进程之间重叠
- 也许线程安全?
- 几乎所有东西都在一个实例上
- 但我还没有用线程对它进行广泛的测试
- 不支持删除文档
- <> LI>如果现有文档更改或被删除,则将保留过时数据。
在索引中
- 一种解决方法是清除索引目录,将文档移出 并对它们进行重新编号:/
- 因为写一个完整的波特或雪球词干是超出需要的 这个库的
- 这是一个概念证明和学习工具,notlucene!
- 在安然语料库的前1.2k份文档上,2011年的mbp为:
索引在1每秒文件 非常慢
- 搜索速度相当快,每次查询大约0.007秒
运行测试
使用源代码签出,运行:
在python 2中:
python -m unittest2 tests
在python 3中:
python -m unittest tests
测试应该始终在Python2.7和Python3.2下通过。
贡献
如果您希望为改进microsearch做出贡献,那么您提交的代码 必须:
- 获得自己的工作和BSD许可
- 包括工作修复/功能
- 包括通过新代码的测试覆盖率
- 如果是面向用户的,则必须包括文档
其他的提交是受欢迎的,但不会被合并,直到所有这些 满足要求。
author: | Daniel Lindsley <daniel@toastdriven.com> |
---|---|
date: | 2011/02/22 |