SOLR的Jython绑定

时间:2012-01-18 14:15:27

标签: python api binding solr jython

SOLR有许多独立的Python绑定(see here)。哪些可用于Jython(即用纯Python而不是C模块实现),你会推荐哪一个?

另见 Solr: best documented, easy to use, stable Python APIs(到目前为止没有得到太多有用的回复)

1 个答案:

答案 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模式包含在您的应用程序的文件中。只需从应用程序中的服务器直接获取它并在本地缓存它。