在执行此操作时我需要一些帮助:我必须构建以下 URL 才能执行针对 Apache Solr 实例的查询:
http://localhost:8080/solr/select?q=*%3A*&fq=deal_discount%3A[20+TO+*]&fq=deal_price%3A[*+TO+100]&fq={!geofilt+pt%3D45.6574%2C9.9627+sfield%3Dlocation_latlng+d%3D600}
如您所见,该 URL 包含 3 次名为“fq”的参数。我只是想知道如何使用 URI.parse() 方法,如果我需要在作为 parse() 方法的第二个参数的 Hash 中传递三次参数“fq”。
这是一个简单的片段:
path = 'http://localhost:8080/solr/select'
pars = { 'fq' => 'deal_price [* TO 100]', 'fq' => '{!geofilt pt=45.6574,9.9627 sfield=location_latlng d=600}' } # This is obviously wrong!
res = Net::HTTP::post_form( URI.parse(path), pars )
解决方案是将完整的 URL 作为字符串传递,但我找不到提供这种签名的方法。
你能为我的问题发布一个简单的解决方案吗?提前致谢。
最佳答案
感谢您的帮助。是的,你是对的......我需要一个 get 方法。不管怎样,我不得不对你的代码做一点改动,因为 Net:HTTP.get() 抛出了一个异常“Unknown method hostname”
uri = URI(solrUrl)
req = Net::HTTP::Get.new(uri.request_uri)
res = Net::HTTP.start(uri.hostname, uri.port) {|http|
http.request(req)
}
这解决了我的问题。真的谢谢。
关于Ruby 简单 Web 服务客户端执行对 Solr 的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780311/