Ruby 简单 Web 服务客户端执行对 Solr 的调用

标签 ruby solr webservice-client

在执行此操作时我需要一些帮助:我必须构建以下 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/

相关文章:

ios - Braintree 保险库不存储付款方式

ruby-on-rails - Rails 4 Devise 重新激活 "soft deleted"帐户

javascript - 在 Javascript 中使用 Web 服务

java - 如何更改 Google 应用引擎上 Web 服务调用的默认超时?

solrj 原子更新 - 如何将字段设置为空?

java - 如何猜测具有 WS-Security 响应的城墙中的项目顺序?

ruby - 使用 Thin 和 Sinatra 异步迭代请求的响应

ruby-on-rails - 在 Mac OS X 上完全重新安装 Ruby Rails 和 Gem

python - 如何使用具有自定义属性的 django-haystack 搜索面?

solr函数查询示例