Python SOLR的Jython绑定

Python SOLR的Jython绑定,python,api,binding,solr,jython,Python,Api,Binding,Solr,Jython,SOLR()有许多独立的Python绑定。Jython可以使用哪些模块(即,使用纯Python而不是C模块实现),您推荐哪一个 另见 (到目前为止没有得到太多有用的响应)我使用来自Python(CPython)和Scala(JVM)的SOLR。在这两种情况下,我使用相同的API,即HTTP客户端。换句话说,URL像:*&fl=DocID,Descr URL是通过组合构建的。对于查询,有一个dict,其中字段名作为键,匹配项作为值。例如,上面的查询看起来像{“DocID”:“*”}。这条命令与每个

SOLR()有许多独立的Python绑定。Jython可以使用哪些模块(即,使用纯Python而不是C模块实现),您推荐哪一个

另见 (到目前为止没有得到太多有用的响应)

我使用来自Python(CPython)和Scala(JVM)的SOLR。在这两种情况下,我使用相同的API,即HTTP客户端。换句话说,URL像:*&fl=DocID,Descr

URL是通过组合构建的。对于查询,有一个dict,其中字段名作为键,匹配项作为值。例如,上面的查询看起来像{“DocID”:“*”}。这条命令与每个键连接在一起,并在每个键之间连接。实际上,这些值是使用更复杂的查询(例如)连接的列表

{"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模式包含在应用程序的文件中。直接从应用程序中的服务器获取并在本地缓存即可。

您不能使用Jython提供的Solr Java类吗?当然可以,但我更喜欢用Python编程。我只想在Tomcat中运行它,因为Tomcat已经存在,而不是mod_python等等。否则我可以用Java来运行它。谢谢你的详细回答。我明白你的观点,也明白学习独立于任何语言和绑定的HTTP语法的好处。关于选择被接受的答案,我想我会得到更多的答案,所以我可以考虑多个观点。所以我不确定我现在是否应该接受这个特定的答案,或者等待更多的意见。