RequestDispatcher

solrconfig.xmlrequestDispatcher 元素控制 Solr HTTP RequestDispatcher 實作如何回應請求。

包含的參數可用於定義是否應處理 /select 網址 (為了與 Solr 1.1 相容)、是否支援遠端串流、檔案上傳的最大大小,以及如何回應請求中的 HTTP 快取標頭。

handleSelect 元素

handleSelect 用於舊版回溯相容性;Solr 新手不需要變更此設定的預設方式。

第一個可設定項目是 <requestDispatcher> 元素本身的 handleSelect 屬性。此屬性可以設定為兩個值之一:「true」或「false」。它會控管 Solr 如何回應 /select?qt=XXX 之類的請求。預設值「false」會忽略對 /select 的請求,除非請求處理器明確以名稱 /select 註冊。如果請求處理器未明確以名稱 /select 註冊,則值為「true」會將查詢請求路由至使用 qt 值定義的剖析器。

在最近版本的 Solr 中,預設會定義 /select 請求處理器,因此值為「false」也沒問題。請參閱 請求處理器和搜尋元件 一節以取得更多資訊。

<requestDispatcher handleSelect="true" >
  ...
</requestDispatcher>

requestParsers 元素

<requestParsers> 子元素控制與剖析請求相關的值。這是一個空的 XML 元素,沒有任何內容,只有屬性。

multipartUploadLimitInKB

選用

預設值:-1

此屬性設定可以透過多部分 HTTP POST 請求提交的文件大小上限 (以 KB 為單位)。指定的值乘以 1024 來決定位元組大小。值 -1 表示 MAX_INT,如果省略,則為系統預設值。

formdataUploadLimitInKB

選用

預設值:-1

此屬性設定以 KB 為單位的表單資料大小限制 (application/x-www-form-urlencoded) (以 HTTP POST 請求提交),此可以用於傳遞不適合 URL 的請求參數。值 -1 表示 MAX_INT,如果省略,則為系統預設值。

addHttpRequestToContext

選用

預設值:無

此屬性可用於指出原始的 HttpServletRequest 物件應使用金鑰 httpRequest 包含在 SolrQueryRequest 的內容對應中。任何 Solr 元件都不會使用此 HttpServletRequest,但在開發自訂外掛程式時可能會很有用。

<requestParsers multipartUploadLimitInKB="2048"
                formdataUploadLimitInKB="2048"
                addHttpRequestToContext="false" />

httpCaching 元素

<httpCaching> 元素控制 HTTP 快取控制標頭。請勿將這些設定與 Solr 的內部快取組態混淆。此元素控制 W3C HTTP 規格所定義的 HTTP 回應快取。

此元素允許三個屬性和一個子元素。<httpCaching> 元素的屬性控制是否允許對 GET 請求的 304 回應,如果允許,應該是哪種回應。當 HTTP 用戶端應用程式發出 GET 時,如果資源自上次提取以來未修改,則可以選擇指定可接受 304 回應。

never304

選用

預設值:無

如果值為 true,即使請求的資源未被修改,GET 請求也不會回應 304 程式碼。當此屬性設定為 true 時,接下來的兩個屬性將被忽略。將此設定為 true 對於開發非常方便,因為當透過網頁瀏覽器或其他支援快取標頭的用戶端修改 Solr 回應時,304 回應可能會造成混淆。

lastModFrom

選用

預設值:openTime

此屬性可以設定為 openTimedirLastMod

openTime 表示,與用戶端傳送的 If-Modified-Since 標頭相比,最後修改時間應相對於 Searcher 啟動的時間計算。

如果您希望時間與索引在磁碟上最後更新的時間完全對應,請使用 dirLastMod

etagSeed

選用

預設值:無

此屬性的值會作為 ETag 標頭的值傳送。更改此值有助於強制用戶端重新擷取內容,即使索引沒有更改;例如,當您對組態進行了一些變更時。

<httpCaching never304="false"
             lastModFrom="openTime"
             etagSeed="Solr">
  <cacheControl>max-age=30, public</cacheControl>
</httpCaching>

cacheControl 元素

除了這些屬性之外,<httpCaching> 還接受一個子元素:<cacheControl>。此元素的內容將作為 HTTP 回應的 Cache-Control 標頭的值傳送。此標頭用於修改請求用戶端的預設快取行為。Cache-Control 標頭的可能值在 HTTP 1.1 規範的 第 14.9 節中定義。

設定 max-age 欄位可控制用戶端在再次向伺服器請求之前可以重複使用快取回應的時間長度。此時間間隔應根據您更新索引的頻率以及您的應用程式是否可接受使用有些過期的內容來設定。設定 must-revalidate 會告知用戶端在重複使用快取副本之前,必須向伺服器驗證其快取副本是否仍然有效。這將確保使用最及時的結果,同時避免在不需要時第二次擷取內容,但代價是要向伺服器發送請求來進行檢查。