W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
響應(yīng)編寫(xiě)器生成搜索的格式化的響應(yīng)。
Solr 支持各種響應(yīng)編寫(xiě)器,以確保查詢(xún)響應(yīng)可以被適當(dāng)?shù)恼Z(yǔ)言或應(yīng)用程序解析。
該 wt 參數(shù)選擇要使用的響應(yīng)編寫(xiě)器。下文中介紹了該 wt 參數(shù)最常用的設(shè)置,并提供了更多詳細(xì)討論這些內(nèi)容的部分。
默認(rèn)的 Solr 響應(yīng)編寫(xiě)器是 JsonResponseWriter,它在 JavaScript 對(duì)象表示法 (JSON) 中格式化輸出,它是 RFC 4627 中指定的輕量級(jí)數(shù)據(jù)交換格式。如果您在請(qǐng)求中沒(méi)有設(shè)置 wt 參數(shù),則默認(rèn)情況下將獲得 JSON。
下面是一個(gè)簡(jiǎn)單的查詢(xún)(q=id:VS1GB400C3)的示例響應(yīng):
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":7,
"params":{
"q":"id:VS1GB400C3"}},
"response":{"numFound":1,"start":0,"maxScore":2.3025851,"docs":[
{
"id":"VS1GB400C3",
"name":["CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail"],
"manu":["Corsair Microsystems Inc."],
"manu_id_s":"corsair",
"cat":["electronics",
"memory"],
"price":[74.99],
"popularity":[7],
"inStock":[true],
"store":["37.7752,-100.0232"],
"manufacturedate_dt":"2006-02-13T15:26:37Z",
"payloads":["electronics|4.0 memory|2.0"],
"_version_":1549728120626479104}]
}}
JSON 編寫(xiě)器的默認(rèn) MIME 類(lèi)型是 application/json,但是這可以在 solrconfig.xml 中覆蓋,例如在 "techproducts" 配置中的此示例中:
<queryResponseWriter name="json" class="solr.JSONResponseWriter">
<!-- For the purposes of the tutorial, JSON response are written as
plain text so that it's easy to read in *any* browser.
If you are building applications that consume JSON, just remove
this override to get the default "application/json" mime type.
-->
<str name="content-type">text/plain</str>
</queryResponseWriter>
此參數(shù)控制 NamedLists 的輸出格式,其中順序比按名稱(chēng)訪問(wèn)更重要。NamedList 當(dāng)前用于字段分面數(shù)據(jù)。
該 json.nl 參數(shù)采用以下值:
默認(rèn)值。NamedList 被表示為平面數(shù)組,交替的名稱(chēng)和值。
如果輸入為NamedList("a"=1, "bar"="foo", null=3, null=null)
,輸出將是["a",1, "bar","foo", null,3, null,null]
。
NamedList 被表示為一個(gè) JSON 對(duì)象。雖然這是最簡(jiǎn)單的映射,但 NamedList 可以具有可選鍵、重復(fù)鍵和保留順序。為 NamedList 使用 JSON 對(duì)象(本質(zhì)上是一個(gè) map 或者 hash)會(huì)導(dǎo)致一些信息的丟失。
如果輸入是NamedList("a"=1, "bar"="foo", null=3, null=null)
,則輸出將是{"a":1, "bar":"foo", "":3, "":null}
。
NamedList 被表示為兩個(gè)元素?cái)?shù)組的數(shù)組。
如果輸入為NamedList("a"=1, "bar"="foo", null=3, null=null)
,則輸出將是[["a",1], ["bar","foo"], [null,3], [null,null]]
。
NamedList 被表示為一個(gè) JSON 對(duì)象數(shù)組。
如果輸入為NamedList("a"=1, "bar"="foo", null=3, null=null)
,則輸出將是[{"a":1}, {"b":2}, 3, null]
。
NamedList 被表示為名稱(chēng)類(lèi)型值 JSON 對(duì)象的數(shù)組。
如果輸入為NamedList("a"=1, "bar"="foo", null=3, null=null)
,則輸出將是[{"name":"a","type":"int","value":1}, {"name":"bar","type":"str","value":"foo"}, {"name":null,"type":"int","value":3}, {"name":null,"type":"null","value":null}]
。
json.wrf=function 在 JSON 響應(yīng)中添加一個(gè)包裝函數(shù),在 AJAX 中用于指定 JavaScript 回調(diào)函數(shù)的動(dòng)態(tài)腳本標(biāo)記很有用。
XML 響應(yīng)編寫(xiě)器是 Solr 當(dāng)前包含的最通用和可重用的響應(yīng)編寫(xiě)器。這是大多數(shù)關(guān)于 Solr 查詢(xún)響應(yīng)的討論和文檔中使用的格式。
請(qǐng)注意,XSLT 響應(yīng)編寫(xiě)器可用于將此編寫(xiě)器生成的 XML 轉(zhuǎn)換為其他詞匯表或基于文本的格式。
XML 響應(yīng)編寫(xiě)器的行為可以由以下查詢(xún)參數(shù)驅(qū)動(dòng)。
該version
參數(shù)確定響應(yīng)中使用的 XML 協(xié)議。強(qiáng)烈建議客戶(hù)始終指定協(xié)議版本,以確保如果升級(jí) Solr 服務(wù)器并引入新的默認(rèn)格式,則收到的響應(yīng)格式不會(huì)意外更改。
目前唯一支持的版本值是2.2
。responseHeader
的格式更改為使用與響應(yīng)的其余部分相同的<lst>
結(jié)構(gòu)。
默認(rèn)值是最新支持的。
該stylesheet
參數(shù)可以用來(lái)指導(dǎo) Solr 在它返回的 xml 響應(yīng)中包含<?xml-stylesheet type="text/xsl" href="…?"?>
聲明。
默認(rèn)行為是不返回任何樣式表聲明。
stylesheet
參數(shù),因?yàn)槟壳斑€沒(méi)有指定外部樣式的方法,而且 Solr 發(fā)行版中沒(méi)有提供樣式。這是一個(gè)傳統(tǒng)的參數(shù),可以在將來(lái)的版本中進(jìn)一步發(fā)展。如果indent
參數(shù)被使用,并且有一個(gè)非空的值,那么 Solr 會(huì)嘗試縮進(jìn)它的 XML 響應(yīng),使它更容易被人讀取。
默認(rèn)行為不是縮進(jìn)。
XSLT 響應(yīng)編寫(xiě)器將 XML 樣式表應(yīng)用于輸出。它可以用于諸如 RSS 提要的格式化結(jié)果等任務(wù)。
XSLT 響應(yīng)編寫(xiě)器接受一個(gè)參數(shù):tr 參數(shù),它標(biāo)識(shí)要使用的 XML 轉(zhuǎn)換。該轉(zhuǎn)換必須在 Solr 的 "/xslt 目錄" 中找到。
響應(yīng)的內(nèi)容類(lèi)型根據(jù) XSLT 轉(zhuǎn)換中的 <xsl:output> 語(yǔ)句設(shè)置的,例如:<xsl:output media-type="text/html"/>
下面的示例從 Solr 分布中的 sample_techproducts_configs 配置集中顯示了 XSLT 響應(yīng)編寫(xiě)器的配置方式。
<!--
Changes to XSLT transforms are taken into account
every xsltCacheLifetimeSeconds at most.
-->
<queryResponseWriter name="xslt"
class="org.apache.solr.request.XSLTResponseWriter">
<int name="xsltCacheLifetimeSeconds">5</int>
</queryResponseWriter>
值為5的 xsltCacheLifetimeSeconds 對(duì)于開(kāi)發(fā)很有好處,可以快速看到 XSLT 的變化。對(duì)于生產(chǎn),您可能需要更高的價(jià)值。
這是 Solr 用于節(jié)點(diǎn)間通信以及客戶(hù)端 - 服務(wù)器通信的自定義二進(jìn)制格式。SolrJ 使用此選項(xiàng)作為索引和查詢(xún)的默認(rèn)值。請(qǐng)參閱客戶(hù)端API獲取更多詳細(xì)信息。
返回 Solr 導(dǎo)致在 GeoJSON 增強(qiáng)了特定于 Solr 的 JSON。要使用此功能,請(qǐng)?jiān)O(shè)置 wt=geojson 和 geojson.field 為空間 Solr 的字段的名稱(chēng)。并非所有空間字段類(lèi)型都受支持,并且如果使用不受支持的類(lèi)型,則會(huì)出現(xiàn)錯(cuò)誤。
Solr 有一個(gè)可選的 Python 響應(yīng)格式,通過(guò)以下方式擴(kuò)展其 JSON 輸出,以允許 python 解釋器安全地評(píng)估響應(yīng):
Solr 有一個(gè) PHP 響應(yīng)格式,輸出一個(gè)可以評(píng)估的數(shù)組(可以是 PHP 代碼)。設(shè)置 wt 參數(shù)設(shè)置為 php 調(diào)用 PHP 響應(yīng)編寫(xiě)器。
用法示例:
$code = file_get_contents('http://localhost:8983/solr/techproducts/select?q=iPod&wt=php');
eval("$result = " . $code . ";");
print_r($result);
Solr 還包括一個(gè) PHP 序列化響應(yīng)編寫(xiě)器,它將輸出格式化為一個(gè)序列化數(shù)組。設(shè)置 wt 參數(shù)為 phps 調(diào)用 PHP 序列化響應(yīng)編寫(xiě)器。
用法示例:
$serializedResult = file_get_contents('http://localhost:8983/solr/techproducts/select?q=iPod&wt=phps');
$result = unserialize($serializedResult);
print_r($result);
Solr 有一個(gè)可選的 Ruby 響應(yīng)格式,可以通過(guò)以下方式擴(kuò)展其 JSON 輸出,以便 Ruby 的解釋器可以安全地評(píng)估響應(yīng):
下面是一個(gè)簡(jiǎn)單的例子,說(shuō)明如何使用 Ruby 響應(yīng)格式來(lái)查詢(xún) Solr:
require 'net/http'
h = Net::HTTP.new('localhost', 8983)
hresp, data = h.get('/solr/techproducts/select?q=iPod&wt=ruby', nil)
rsp = eval(data)
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'\] }
CSV響應(yīng)編寫(xiě)器返回以逗號(hào)分隔的值 (CSV) 格式的文檔列表。通常包括在響應(yīng)中的其他信息(如分面信息)不包括在內(nèi)。
CSV響應(yīng)編寫(xiě)器支持多值字段以及偽字段,并且此CSV格式的輸出與 Solr 的 CSV 更新格式兼容。
這些參數(shù)指定將返回的 CSV 格式。您可以接受默認(rèn)值或指定您自己的。
參數(shù) | 默認(rèn)值 |
---|---|
csv.encapsulator |
|
csv.escape |
沒(méi)有 |
csv.separator |
|
csv.header |
默認(rèn)為 |
csv.newline |
|
csv.null |
默認(rèn)為零長(zhǎng)度的字符串。當(dāng)文檔沒(méi)有特定字段的值時(shí)使用此參數(shù) |
這些參數(shù)指定如何對(duì)多值字段進(jìn)行編碼。這些值的每字段重寫(xiě)可以使用 f.<fieldname>.csv.separator=|。
參數(shù) | 默認(rèn)值 |
---|---|
csv.mv.encapsulator |
沒(méi)有 |
csv.mv.escape |
|
csv.mv.separator |
默認(rèn)為 |
例如 http://localhost:8983/solr/techproducts/select?q=ipod&fl=id,cat,name,popularity,price,score&wt=csv 將返回:
id,cat,name,popularity,price,score
IW-02,"electronics,connector",iPod & iPod Mini USB 2.0 Cable,1,11.5,0.98867977
F8V7067-APL-KIT,"electronics,connector",Belkin Mobile Power Cord for iPod w/ Dock,1,19.95,0.6523595
MA147LL/A,"electronics,music",Apple 60 GB iPod with Video Playback Black,10,399.0,0.2446348
該 VelocityResponseWriter 通過(guò) Apache 速度模板化來(lái)處理 Solr 響應(yīng)和請(qǐng)求上下文。
有關(guān)詳細(xì)信息,請(qǐng)參閱“速度響應(yīng)編寫(xiě)器”部分。
Smile 格式是一個(gè) JSON 兼容的二進(jìn)制格式,在這里詳細(xì)描述:http://wiki.fasterxml.com/SmileFormat。
使用此項(xiàng)可以將響應(yīng)作為. xlsx (Microsoft Excel) 格式的電子表格。它接受 colwidth.<field-name> 和 colname.<field-name> 表單中的參數(shù),幫助您自定義列寬和列名。
這個(gè)響應(yīng)編寫(xiě)器已經(jīng)被添加為提取庫(kù)的一部分,并且只有在服務(wù)器類(lèi)路徑中存在提取貢獻(xiàn)時(shí)才起作用。用 lib 指令定義類(lèi)路徑是不夠的。相反,您需要將必要的. jar 手動(dòng)復(fù)制到 Solr web 的 lib 目錄中。您可以從您的 $SOLR_INSTALL 目錄運(yùn)行這些命令:
cp contrib/extraction/lib/*.jar server/solr-webapp/webapp/WEB-INF/lib/
cp dist/solr-cell-6.3.0.jar server/solr-webapp/webapp/WEB-INF/lib/
一旦庫(kù)就位后,您可以將 wt=xlsx 添加您的請(qǐng)求,結(jié)果將作為 XLSX 表單返回。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: