Ruby
Solr 具有可选的 Ruby 响应格式,它扩展了 JSON 响应编写器,以允许响应被 Ruby 的解释器安全地 eval。
此 Ruby 响应格式在以下方面与 JSON 不同
-
Ruby 的单引号字符串用于防止可能的字符串漏洞
-
\
和'
是仅有的两个转义字符…… -
不使用 unicode 转义……数据以原始 UTF-8 形式写入
-
-
nil 用于 null
-
=>
用作映射中的键/值分隔符
以下是一个来自 Solr 的 Ruby 响应示例,用于类似 http://localhost:8983/solr/techproducts/select?q=iPod&wt=ruby&indent=on
的请求(Solr 使用 bin/solr start -e techproducts
启动)
{
'responseHeader'=>{
'status'=>0,
'QTime'=>0,
'params'=>{
'q'=>'iPod',
'indent'=>'on',
'wt'=>'ruby'}},
'response'=>{'numFound'=>3,'start'=>0,'docs'=>[
{
'id'=>'IW-02',
'name'=>'iPod & iPod Mini USB 2.0 Cable',
'manu'=>'Belkin',
'manu_id_s'=>'belkin',
'cat'=>['electronics',
'connector'],
'features'=>['car power adapter for iPod, white'],
'weight'=>2.0,
'price'=>11.5,
'price_c'=>'11.50,USD',
'popularity'=>1,
'inStock'=>false,
'store'=>'37.7752,-122.4232',
'manufacturedate_dt'=>'2006-02-14T23:55:59Z',
'_version_'=>1491038048794705920},
{
'id'=>'F8V7067-APL-KIT',
'name'=>'Belkin Mobile Power Cord for iPod w/ Dock',
'manu'=>'Belkin',
'manu_id_s'=>'belkin',
'cat'=>['electronics',
'connector'],
'features'=>['car power adapter, white'],
'weight'=>4.0,
'price'=>19.95,
'price_c'=>'19.95,USD',
'popularity'=>1,
'inStock'=>false,
'store'=>'45.18014,-93.87741',
'manufacturedate_dt'=>'2005-08-01T16:30:25Z',
'_version_'=>1491038048792608768},
{
'id'=>'MA147LL/A',
'name'=>'Apple 60 GB iPod with Video Playback Black',
'manu'=>'Apple Computer Inc.',
'manu_id_s'=>'apple',
'cat'=>['electronics',
'music'],
'features'=>['iTunes, Podcasts, Audiobooks',
'Stores up to 15,000 songs, 25,000 photos, or 150 hours of video',
'2.5-inch, 320x240 color TFT LCD display with LED backlight',
'Up to 20 hours of battery life',
'Plays AAC, MP3, WAV, AIFF, Audible, Apple Lossless, H.264 video',
'Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication'],
'includes'=>'earbud headphones, USB cable',
'weight'=>5.5,
'price'=>399.0,
'price_c'=>'399.00,USD',
'popularity'=>10,
'inStock'=>true,
'store'=>'37.7752,-100.0232',
'manufacturedate_dt'=>'2005-10-12T08:00:00Z',
'_version_'=>1491038048799948800}]
}}
以下是如何使用 Ruby 响应格式查询 Solr 的简单示例
require 'net/http'
h = Net::HTTP.new('localhost', 8983)
http_response = h.get('/solr/techproducts/select?q=iPod&wt=ruby')
rsp = eval(http_response.body)
puts 'number of matches = ' + rsp['response']['numFound'].to_s
#print out the name field for each returned document
rsp['response']['docs'].each { |doc| puts 'name field = ' + doc['name'] }
对于与 Solr 的简单交互,这可能就是您所需要的!如果您正在构建与 Solr 的复杂交互,那么请考虑 Solr Wiki 中提到的库。