RequestDispatcher

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

包括用于定义它是否应该处理 /select url(为了 Solr 1.1 兼容性)、它是否支持远程流、文件上传的最大大小以及它将如何响应请求中的 HTTP 缓存头的参数。

handleSelect 元素

handleSelect 用于向后兼容;Solr 新手无需更改默认配置方式。

第一个可配置项是 <requestDispatcher> 元素本身上的 handleSelect 属性。此属性可以设置为两个值之一,即“true”或“false”。它控制 Solr 如何响应诸如 /select?qt=XXX 之类的请求。默认值“false”将忽略对 /select 的请求,除非显式注册了名为 /select 的请求处理程序。值为“true”将路由查询请求到使用 qt 值定义的解析器,除非显式注册了名为 /select 的请求处理程序。

在最近的 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 的内部缓存配置混淆。此元素控制 HTTP 响应的缓存,如 W3C HTTP 规范所定义。

此元素允许三个属性和一个子元素。<httpCaching> 元素的属性控制是否允许对 GET 请求进行 304 响应,以及如果允许,响应应该是什么类型。当 HTTP 客户端应用程序发出 GET 请求时,它可以选择指定如果资源自上次获取以来未被修改,则 304 响应是可以接受的。

never304

可选

默认值:无

如果存在且值为 true,则 GET 请求将永远不会以 304 代码响应,即使请求的资源未被修改。当此属性设置为 true 时,接下来的两个属性将被忽略。将此设置为 true 对开发很有用,因为当通过支持缓存头的 Web 浏览器或其他客户端修改 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 将告诉客户端在重新使用缓存副本之前验证其缓存副本是否仍然有效。这将确保使用最及时的结果,同时避免在不需要的情况下二次获取内容,但需要向服务器发送请求以进行检查。