简单的python全文搜索模块,由redis支持

pyreds的Python项目详细描述


reds是对node.js的轻量级redis搜索。

比利斯山是一个红色的Python港口。

安装

pyreds需要一个正在运行的Redis服务器有关安装说明,请参见Redis’s quickstart

要安装pyreds,只需:

$ pip install pyreds

您可能需要安装NLTK数据:

>>> importnltk>>> nltk.download('stopwords')

开始

您首先要做的是创建一个搜索实例,它允许您传递一个,用于redis中的命名空间,以便您可以在同一数据库中进行多个搜索。

>>> importpyreds>>> search=pyreds.create_search('pets')

pyreds对任意数字或基于字符串的id起作用,因此您可以将这个库与任何您想要的东西一起使用,甚至可以组合数据存储。下面的示例只使用“数据库”的列表,其中包含一些字符串,我们通过调用search\index()填充文本体和某种ID(在本例中是索引)来将这些字符串添加到pyreds。

>>> strs=[]>>> strs.append('Tobi wants four dollars')>>> strs.append('Tobi only wants $4')>>> strs.append('Loki is really fat')>>> strs.append('Loki, Jane, and Tobi are ferrets')>>> strs.append('Manny is a cat')>>> strs.append('Luna is a cat')>>> strs.append('Mustachio is a cat')>>> fori,vinenumerate(strs):... search.index(v,i)

要对pyreds执行查询,只需使用字符串调用query(),该字符串返回一个查询实例。然后调用Query#end(),当存在时返回id列表,否则返回空列表

>>> ids=search.query('Tobi dollars').end()>>> print('Search results for "Tobi dollars"'))>>> foridinids:... print('  - {}'.format(strs[id]))

默认情况下,pyreds执行搜索词的交集。上一个示例将产生以下输出,因为只有一个字符串同时包含“tobi”和“dollars”:

Search results for "Tobi dollars":
    - Tobi wants four dollars

我们可以通过在Search()和query()之间传递“union”或“or”toSearch()type()来调整pyred以执行union,这表示计算出的任何常量都可能存在,以便id匹配

>>> ids=search.query('tobi dollars').type('or').end()>>> print('Search results for "Tobi dollars"'))>>> foridinids:... print('  - {}'.format(strs[id]))

联合搜索将产生以下结果,因为三个字符串包含“tobi”或“dollars”:

Search results for "tobi dollars":
    - Tobi wants four dollars
    - Tobi only wants $4
    - Loki, Jane, and Tobi are ferrets

API

>>> search=pyreds.create_search(key)>>> search.index(text,id)>>> search.remove(id)>>> query=search.query(text[,type])# will return a `Query` instance>>>
>>> query.between(start,stop)>>> query.type(type)>>> query.end()

许可证

麻省理工学院的执照

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

推荐PyPI第三方库


热门话题
java使用McClickListener单击了什么元素   Java时间戳在Oracle时间戳中不同情况下存储12 PM的奇怪行为   java无法使用事件总线对运行在不同机器上的垂直体进行通信   java Mockserver:收到请求后进行回调   java无法将Json字符串转换为Map<string,Object>   java如何按升序排列输出?   java视图行,带有oracle键。jbo。在SrCategoryParentIterator中找不到键[300100120394155]   javafxmysql连接示例   java正在等待加载完成   java是否可以将同一个有状态会话bean实例注入多个其他会话bean?   java无法让万向节检测离开或进入区域   使用JavaCV和OpenCV的java提供了dyld:lazy符号绑定失败:找不到符号:__sincos_stret   xml解析无法使用Java读取xml文档   java无法更改工具栏的颜色   javaapachesshd和JSCH   java无法在firebase存储中检索图像url   java问题与executeUpdate   同一应用程序中不同活动之间的java SharedReference