一个小的搜索库。

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第三方库


热门话题
java Android Action_Edit Intent无法像以前一样调用App Gallery来编辑图片   确保JRE兼容性的java适当程序(32或64位)   java JSONArray。for循环中的add(JSONObject)正在替换for循环中的旧值,数组由循环中的最后一个值组成   java需要帮助创建一个返回数组的方法,该数组的元素是另一个数组的平方   使用SmbFile w/groovy XmlSluper()创建xml。解析()Java   检查大小后的java ArrayIndexOutOfBoundsException   乘法表中的第k个最小元素   java 401 on请求,其中指定了'permitAll()'   java如何附加ORC文件   java hibernate类模型   java IDEA没有看到由自定义注释处理器生成的方法   Servlet中未声明java SerialVersionId   java linkedlist到达列表末尾时   java如何正确对齐EditText光标?   java 6编译器1.6上的eclipse重写方法错误   java如何在基于Jersey的RESTful Web服务中读取post数据   java如何在活动中正确使用接口?   Java的JIT编译器的工作速度有多快?