跳转到主要内容

Python Solr查询工具

项目描述

Build Status Coverage Status Documentation Status

solrq

solrq是一个Python Solr查询工具。它帮助构建Solr查询字符串,并帮助转义保留字符。solrq没有外部依赖,与python3.7python3.8python3.9python3.10python3.11pypypypy3兼容。它可能与其他Python版本/实现兼容,但尚未进行测试或不再进行测试(例如python3.2python2.7)。

pip install solrq

现在你可以开始使用了!

用法

solrq中的一切都是关于Q()对象。在Python交互式环境中输入,并提供一些字段和搜索词,以查看其如何工作。

>>> from solrq import Q
>>> # note: all terms in single Q object are implicitely joined with 'AND'
>>> query = Q(type="animal", species="dog")
>>> query
<Q: type:animal AND species:dog>

>>> # ohh, forgot about cats?
>>> query | Q(type="animal", species="cat")
<Q: (type:animal AND species:dog) OR (type:animal AND species:cat)>

>>># more a cat lover? Let's give them a boost boost
>>> Q(type="animal") & (Q(species="cat")^2 | Q(species="dog"))
<Q: type:animal AND ((species:cat^2) OR species:dog)>

但是,如何使用这个Q?简单地将它传递到您选择的Solr库中,例如pysolrmysolr。大多数Python Solr库期望查询参数是一个简单的字符串,并且不关心保留字符的转义,因此您必须自己处理。这就是为什么solrq可以如此容易地集成。以下是如何使用pysolr的示例:

from solrq import Q
import pysolr

solr = Solr("<your solr url>")

# simply using Q object
solr.search(Q(text="easy as f***"))

# or explicitely making it string
solr.search(str(Q(text="easy as f***")))

快速参考

完整的参考信息可以在API参考文档页面找到,但这里有一些简要的参考。

查询提升

使用Python的^运算符

>>> Q(text='cat') ^ 2
<Q: text:cat^2>

AND查询

使用Python的&运算符

>>> Q(text='cat') & Q(text='dog')
<Q: text:cat AND text:dog>

OR查询

使用Python的|运算符

>>> Q(text='cat') | Q(text='dog')
<Q: text:cat OR text:dog>

NOT查询

使用Python的~运算符

>>> ~ Q(text='cat')
<Q: !text:cat>

范围

使用solrq.Range包装器

>>> from solrq import Range
>>> Q(age=Range(18, 25))
<Q: age:[18 TO 25]>

邻近搜索

使用solrq.Proximity包装器

>>> from solrq import Proximity
>>> Q(age=Proximity("cat dogs", 5))
<Q: age:"cat\ dogs"~5>

安全字符串

默认情况下,所有原始字符串值都被视为不安全,并且将被转义以确保最终查询字符串不会被某些恶意搜索值破坏。当然,如果您知道自己在做什么,可以使用Value包装器来禁用此功能。

>>> from solrq import Q, Value
>>> Q(type='foo bar[]')
<Q: type:foo\ bar\[\]>
>>> Q(type=Value('foo bar[]', safe=True))
<Q: type:foo bar[]>

时间增量,日期时间

简单地使用

>>> from datetime import datetime, timedelta
>>> Q(date=datetime(1970, 1, 1))
<Q: date:"1970-01-01T00:00:00Z">
>>> # note that timedeltas has any sense mostly with ranges
>>> Q(delta=timedelta(days=1))
<Q: delta:NOW+1DAYS+0SECONDS+0MILLISECONDS>

字段通配符

如果您需要在字段名称中使用通配符,只需使用字典,并在Q()内部展开它,而不是使用关键字参数。

    >>> Q(**{"*_t": "text_to_search"})
    <Q: *_t:text_to_search>

贡献

任何贡献都是受欢迎的。问题、建议、拉取请求——无论什么。除了PEP-8和合理性之外,没有严格的贡献指南。代码风格使用flakes8进行检查,任何失败的构建的拉取请求将不会被合并。

一点注意事项:如果您提交了PR,请不要重新基准它,除非您被明确要求这样做。突然重写历史记录的拉取请求让我非常疯狂。

测试

测试使用tox运行。只需安装它并运行即可。

pip install tox
tox

就这么多。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

solrq-1.1.2.tar.gz (11.3 kB 查看散列)

上传时间

构建分布

solrq-1.1.2-py2.py3-none-any.whl (9.3 kB 查看散列)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面