Python Solr查询工具
项目描述
solrq
solrq
是一个Python Solr查询工具。它帮助构建Solr查询字符串,并帮助转义保留字符。solrq
没有外部依赖,与python3.7
、python3.8
、python3.9
、python3.10
、python3.11
、pypy
和pypy3
兼容。它可能与其他Python版本/实现兼容,但尚未进行测试或不再进行测试(例如python3.2
或python2.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库中,例如pysolr或mysolr。大多数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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 9ddd607ebb5f4521f925f10fcaae444f861c0a83862f47154efa8d14c173cc41 |
|
MD5 | c22c41eaf1f732d2281823ffc8e84e40 |
|
BLAKE2b-256 | 2cd8ba3d98034f149f3707dee33f5b1b5020c264006ba5caa87270c41580e314 |
solrq-1.1.2-py2.py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7fa57431d8a26955be91733c999266ec204b6f28cbea0eb45d21e6d282b00ff8 |
|
MD5 | 74cda1129d9c2abbdd9b06cc83aa1cd6 |
|
BLAKE2b-256 | 869ca0eef68c7b1208fc44ced94b6a211c834bf9f40c46e0880dce5694067f19 |