蟒蛇

solrq的Python项目详细描述


Build StatusCoverage StatusDocumentation Status

溶液

solrq是一个python solr查询实用程序。它有助于生成查询字符串 对于solr,还有助于转义保留字符。solrq是 没有外部依赖项,并且可与python2.6兼容, python2.7python3.3python3.4python3.5pypypypy3。它可能与其他python兼容 发布/实现,但尚未测试或不再测试 测试(例如python3.2

pip install solrq

你准备好了!

用法

solrq中的所有内容都是关于Q()对象的。放入python repl 只需输入一堆字段和搜索条件就可以了 作品:

>>>fromsolrqimportQ>>># note: all terms in single Q object are implicitely joined with 'AND'>>>query=Q(type="animal",species="dog")>>>query<Q:type:animalANDspecies:dog>>>># ohh, forgot about cats?>>>query|Q(type="animal",species="cat")<Q:(type:animalANDspecies:dog)OR(type:animalANDspecies:cat)>>>># more a cat lover? Let's give them a boost boost>>>Q(type="animal")&(Q(species="cat")^2|Q(species="dog"))<Q:type:animalAND((species:cat^2)ORspecies:dog)>

但是这个Q怎么办呢只要把它传给你的Solr库 选择,如pysolrmysolr。大部分python Solr 库希望使用简单字符串作为查询参数,而不必费心 保留字符的转义,所以您必须通过 你自己。这就是为什么solrq可以如此轻松地集成。下面是一个例子 如何使用它 pysolr

fromsolrqimportQimportpysolrsolr=Solr("<your solr url>")# simply using Q objectsolr.search(Q(text="easy as f***"))# or explicitely making it stringsolr.search(str(Q(text="easy as f***")))

快速参考

完整的引用可以在API reference documentation page中找到,但是 这是一个简短的参考。

增强查询

使用python^运算符:

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

和查询

使用python&运算符:

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

或查询

使用python|运算符:

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

不查询

使用python~运算符:

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

范围

使用solrq.Range包装:

>>>fromsolrqimportRange>>>Q(age=Range(18,25))<Q:age:[18TO25]>

邻近搜索< /H4>

使用solrq.Proximity包装:

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

安全字符串

默认情况下,所有原始字符串值都被视为不安全值,并且 转义以确保最终查询字符串不会被某些 rougue搜索值当然,如果你知道 您正在使用Value包装器:

>>>fromsolrqimportQ,Value>>>Q(type='foo bar[]')<Q:type:foo\ bar\[\]>>>>Q(type=Value('foo bar[]',safe=True))<Q:type:foobar[]>

时间增量,日期时间

简单地说:

>>>fromdatetimeimportdatetime,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>

字段通配符

如果需要在字段名中使用通配符,只需使用dict并将其解压缩 在Q()内部而不是使用关键字参数:

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

贡献

任何贡献都是受欢迎的。问题、建议、请求- 无论什么.除了PEP-8和 神志正常。代码样式用flakes8和任何失败的PR检查 将不会合并生成

一件事:如果你提交了一个公关,请不要再回扣,除非你 是明确要求的突然查看拉取请求 他们的历史被改写让我抓狂。

测试

测试是用毒物进行的。只需安装并运行:

pip install tox
tox

仅此而已。

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

推荐PyPI第三方库


热门话题
java如何为ConcurrentHashMap使用并设置适当的并发级别?   java泛型方法,运行时错误,   java在页面上显示加载的图像   java Paypal定期直接支付问题   java如何延迟重新绘制组件   JavaSpringBoot+Hibernate如何维护@Transient字段   java在其方法中获取关于类的信息   在java中将别名添加到枚举   java如何解决向google报告成绩时“需要重新连接客户端”的问题   清晰的java图像背景   java未找到适合JDateChooser的构造函数(字符串、字符串、字符)   java LRU缓存实现。某些测试用例的代码失败   if语句Java嵌套的if/Else条件   java JSoup“wrap”并非每次都按预期工作   Java Spring引导循环依赖于一个环境   ssl证书无法通过Java和IntelliJ连接到SOAP服务   带整数验证的Java扫描器   java在Flex中呈现具有动态列的datagrid   java Android:通过用户选择的选项将文件上载到服务器   子类中的java抛出错误、异常和运行时异常