蟒蛇
solrq的Python项目详细描述
溶液
solrq是一个python solr查询实用程序。它有助于生成查询字符串 对于solr,还有助于转义保留字符。solrq是 没有外部依赖项,并且可与python2.6兼容, python2.7,python3.3,python3.4,python3.5,pypy和 pypy3。它可能与其他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库 选择,如pysolr或 mysolr。大部分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
仅此而已。