一个小的搜索库。

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>如果现有文档更改或被删除,则将保留过时数据。 在索引中
    • 一种解决方法是清除索引目录,将文档移出 并对它们进行重新编号:/
  • 仅支持N个程序
    • 因为写一个完整的波特或雪球词干是超出需要的 这个库的
  • 没有关于音阶性能的线索
    • 这是一个概念证明和学习工具,notlucene!
    • 在安然语料库的前1.2k份文档上,2011年的mbp为:
        索引在1每秒文件非常慢
      • 搜索速度相当快,每次查询大约0.007秒
      • 索引时RAM从不超过15MB,搜索时为10MB
      • 源repo中的脚本为enron_bench.py

运行测试

使用源代码签出,运行:

在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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javascript如何从Java中的seleniun访问Chrome上的PDF查看器DOM?   如何打印字符串中的大写字母数   java使用htmlUnit处理动态html表单   java等待事件分派线程创建的GUI   java如何在屏幕上移动/动画单个子类对象而不移动其他子类?   java拟合是从PRNG到最大-最小范围的结果   java如何隐藏所有其他片段   java OpenGL ES纹理图谱失真   java排队/退队或报价/投票   java step/stp文件在另外两个点之间的距离   java如何设置水平仪栏的动画?   在Flex和Java中压缩和解压缩XML   java如何使用AutoIt安装JRE   java我想删除NavigationView布局上的一个栏   java Android Studio按钮小部件OnClick。找不到函数   java ImageView隐藏和显示   java类型的方法和构造函数未定义   swing Java UDP数据包未从客户端程序到达服务器程序   java如何在我自己的服务器上配置推送通知?