简单的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()
许可证
麻省理工学院的执照