2012-01-18 61 views
0

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

参见 Solr: best documented, easy to use, stable Python APIs(没有得到太多有用的答复迄今)

+0

难道你不能使用Jython中的Solr Java类吗? – mzjn 2012-01-19 17:08:48

+0

当然,但我更喜欢用Python编程。我只是想在Tomcat中运行它,因为Tomcat已经存在,而不是mod_python等,否则我可以用Java来做。 – user323094 2012-01-25 13:23:31

回答

3

我用在Python(CPython的)SOLR和斯卡拉(JVM)。在这两种情况下,我都使用相同的API,即HTTP客户端。换句话说,网址类似于http://www.example.com:8080/solr/datacore/select?q=DocID:* & fl = DocID,描述

这些URL是通过合成构建的。对于查询,有一个字典包含字段名作为键,并且作为值匹配。例如,上面的查询看起来像{“DocID”:“*”}。这个字典在每个关键字之间用AND连接。实际上,这些值是其开始使用连接或让喜欢

{"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 

然后,这在得到的方法等链中使用的

除此之外的任何东西都是矫枉过正,并且隐藏了太多隐藏的库中发生的事情,如果不研究其代码,您就无法理解。仅仅理解SOLR的查询语言的所有权力以及如何有效地使用它就已经够难了。不要在你和SOLR之间放置一个库,只需要一页代码就可以编写一些辅助方法来构建一个查询URL。顺便说一句,如果您确实使用了一个库,并且它需要查看SOLR模式才能正常工作,请不要将SOLR模式与您的应用程序一起包含在文件中。只需从应用程序中的服务器直接获取并在本地缓存即可。

+0

谢谢您的详细解答。我明白你的观点和学习独立于任何语言和绑定的HTTP语法的好处。关于选择接受的答案,我想我会得到更多的答案,以便我可以考虑多个观点。所以我不确定我现在应该接受这个特定的答案还是等待更多的意见。 – user323094 2012-01-30 11:33:46