总的来说,通过这个功能可以对查询结果信息进行修改。
1.使用方法:fl=id,name,score,[shard]
一些的转换器允许,使用本地的参数,这种参数形式科颜氏键值对形式在中括号中:
fl=id,name,score,[explain style=nl]
fl=id,name,score,my_val_a:[value v=42 t=int],my_val_b:[value v=7 t=float]
2.可用转换器
2.1[value] - ValueAugmenterFactory
修改每个文件中相同的数据:
q=*:*&fl=id,greeting:[value v='hello']
其产生的结果可能是:
<result name="response" numFound="32" start="0">
<doc>
<str name="id">1</str>
<str name="greeting">hello</str></doc>
</doc>
...
默认返回值的类型是string,但是“t”参数可用使用int,double,date:
q=*:*&fl=id,my_number:[value v=42 t=int],my_string:[value v=42]
另外,你可以通过配置初始化ValueAugmenterFactory,配置这些请求参数,或者重写solrconfig.xml文件中默认的值:
<transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
<int name="value">5</int>
</transformer>
<transformer name="value" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
<double name="defaultValue">5</double>
</transformer>
value值要求有确定的值,而默认值可以使用,也可以被复写,通过使用v或者t的本地参数;
2.2 [explain] - ExplainAugmenterFactory
这种在调试模式使用:q=features:cache&wt=json&fl=id,[explain style=nl]
可使用的值style是:text,html,nl返回一个结果数据:
{ "response":{"numFound":2,"start":0,"docs":[
{
"id":"6H500F0",
"[explain]":{
"match":true,
"value":1.052226,
"description":"weight(features:cache in 2) [DefaultSimilarity], result of:",
"details":[{
默认的方式赔配置成为一个参数:
<transformer name="explain" class="org.apache.solr.response.transform.ExplainAugmenterFactory" >
<str name="args">nl</str>
</transformer>
<transformer name="explain" class="org.apache.solr.response.transform.ExplainAugmenterFactory" >
<str name="args">nl</str>
</transformer>
<transformer name="explain" class="org.apache.solr.response.transform.ExplainAugmenterFactory" >
<str name="args">nl</str>
</transformer>
<transformer name="explain" class="org.apache.solr.response.transform.ExplainAugmenterFactory" >
<str name="args">nl</str>
</transformer>
2.3[shard] - ShardAugmenterFactory
ShardAugmenterFactory不支持请求参数,配置选项;
2.4[docid] - DocIdAugmenterFactory
2.5[elevated] and [excluded]
3.Subquery result fields