SOLR有许多独立的Python绑定(see here)。哪些可用于Jython(即用纯Python而不是C模块实现),你会推荐哪一个?
另见 Solr: best documented, easy to use, stable Python APIs(到目前为止没有得到太多有用的回复)
答案 0 :(得分:3)
我使用Python(CPython)和Scala(JVM)的SOLR。在这两种情况下,我都使用相同的API,即HTTP客户端。换句话说,像http://www.example.com:8080/solr/datacore/select?q=DocID这样的网址:*& fl = DocID,Descr
网址是通过合成构建的。对于查询,有一个包含字段名作为键的dict,并匹配为值。例如,上面的查询看起来像{“DocID”:“*”}。这个dict与每个键之间的AND连接。实际上,值是使用OR加入的列表,因此是一个更复杂的查询,如
{"DocType": ["Book","Paper",Letter"], "Length": ["[0 TO 200000]"]}
会变成像
这样的SOLR查询DocType:Book OR Paper OR Letter AND Length:[0 TO 200000]
使用一个简单的对象完成组合,其中每个方法都返回self,例如:
def onlybooks(self):
self.querydict["DocType"] = "Book"
return self
然后在以下方法链中使用:
solrquery = onlybooks().specifiedauthor(params).biggestdoc(200000)
除此之外的任何事情都是过度的,并且隐藏了一个在一个不起作用的库中发生的事情,如果不研究它的代码就无法理解。仅仅了解SOLR查询语言的所有功能以及如何有效地使用它是很困难的。当你只需要一页代码来编写一些辅助方法来构建查询URL时,不要在你和SOLR之间放置一个库。
顺便说一下,如果您确实使用了库并且需要查看SOLR模式才能运行,请不要将SOLR模式包含在您的应用程序的文件中。只需从应用程序中的服务器直接获取它并在本地缓存它。