一.选择响应格式
XML是Solr的默认响应格式。从Solr的角度看,什么样的响应格式并不重要。Solr可以返回XML、JSON、Ruby、Python、PHP、二进制Java等,甚至是自定义格式。使用wt参数修改响应格式。Solr的wt参数的可用格式如下:
当需要更改Solr的响应格式时,需要在请求中将wt参数设置为你需要的类型。例如:
使用wt请求参数可以轻松地配置Solr的响应格式。如有需要,还可以为搜索应用编写专门的响应格式。为此,需要编写一个继承Solr的QueryResponseWriter的类。然后,在solrconfig.xml文件中注册该响应读写器。如下:
一般情况下没有必要专门开发一种响应格式,除非有特殊要求,例如需要对数据进行加密,或者需要对Solr返回的字段进行特别限制。
二.选择返回字段 1.返回存储字段字段列表fl参数决定从Solr返回那些字段。字段列表定义了搜索结果中每个文档需要返回的字段,字段之间以逗号分隔,使用语法如下:
2.返回动态值
除了存储字段之外,文档还包含一种可以了解该文档的有用信息,即相关度得分。通过请求特殊的得分字段可以返回每个文档的相关度得分:
————> score为伪列,即相关度得分 3.文档转换
有时在最终文档写入Solr响应结果之前,获取文档的一些额外信息也是有帮助的。这些额外信息可能包含相关度得分如何计算的可读解释、分布式搜索中文档所在的分片,甚至是Lucene内部的文档编号。Solr使用文档转换器来返回此类信息。使用方法如下:
该请求调用了两个特殊字段:[explain]和[shard]。这些用方括号括起来的字段调用文档转换器会获得每个文档的一些元数据。Solr内置的常用文档转换器如下:
[docid]字段通常只用于需要与Lucene基础索引层面进行交互的情况中,这对大多数Solr用户来说是不常用的。
[shard]字段主要用于在分布式搜索中查找文档所在的Solr服务器和内核。
[explain]字段有助于理解文档相关度得分的计算原理。
[value]字段用于返回文档的静态值。
除了Solr内置的文档转换器,还可以通过继承org.apache.solr.response.transform.DocTransformer类,以插件方式编写自己的文档转换器,从而对整个文档进行操作与变换。要在Solr中使用自定义的文档转换器,需要创建一个工厂类来包装文档转换器,该工厂类继承自org.apache.solr.response.transform.TransformerFactory,使用时需要在solrconfig.xml中注册这个转换工厂类:
虽然文档转换器不是Solr最常用的功能,但它在搜索结果的文档返回之前,为文档操作提供了有用的扩展点。
4.返回字段的别名除了通过动态生成值返回伪字段之外,在搜索结果的文档返回之前,Solr还提供了一种字段重命名方法。字段别名在实际字段名之前出现,使用冒号分隔,在搜索结果中使用一个新的字段来返回实际字段名【或动态生成值】的值,别名则作为新字段的名称,例如: