RequestDispatcher

solrconfig.xmlrequestDispatcher 元素控制 Solr HTTP RequestDispatcher 实现响应请求的方式。

其中包括用于定义是否应处理 /select URL(用于 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 请求提交的文档的大小。指定的值乘以 1024 即可确定以字节为单位的大小。值 -1 表示 MAX_INT,如果省略,则也是系统默认值。

formdataUploadLimitInKB

可选

默认值:-1

此属性设置以千字节为单位的限制,限制了 HTTP POST 请求中提交的表单数据 (application/x-www-form-urlencoded) 的大小,该表单数据可用于传递 URL 中无法容纳的请求参数。值 -1 表示 MAX_INT,如果省略,则也是系统默认值。

addHttpRequestToContext

可选

默认值:无

此属性可用于指示原始 HttpServletRequest 对象应使用键 httpRequest 包含在 SolrQueryRequest 的上下文映射中。这个 HttpServletRequest 不会被任何 Solr 组件使用,但在开发自定义插件时可能会有用。

<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 在开发时很方便,因为当通过 Web 浏览器或其他支持缓存头的客户端修改 Solr 响应时,304 响应可能会让人感到困惑。

lastModFrom

可选

默认值:openTime

此属性可以设置为 openTimedirLastMod

openTime 表示与客户端发送的 If-Modified-Since 头相比,上次修改时间应相对于搜索器启动的时间计算。

如果您希望时间与索引上次在磁盘上更新的时间完全对应,请使用 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 标头的可能值在 第 14.9 节 的 HTTP 1.1 规范中定义。

设置 max-age 字段控制客户端在再次从服务器请求缓存响应之前可以重新使用缓存响应的时间长度。此时间间隔应根据您更新索引的频率以及您的应用程序是否可以接受使用稍微过时的内容来设置。设置 must-revalidate 将告诉客户端在重新使用其缓存副本之前,与服务器验证其缓存副本是否仍然有效。这将确保使用最及时的结果,同时避免在不需要时再次获取内容,但代价是向服务器发出请求进行检查。