我有一个 SOLR 查询,应该获取所有存储的字段,除了一个字段。
假设我有20个字段,我需要在&fl=[f],[f],[f],....[f]'
中硬编码出我想要获取的19个字段吗?
或者是否有一种类似于以下方式的方法:
&fl=*,![f]'
[f]
代表一个字段名。
我有一个 SOLR 查询,应该获取所有存储的字段,除了一个字段。
假设我有20个字段,我需要在&fl=[f],[f],[f],....[f]'
中硬编码出我想要获取的19个字段吗?
或者是否有一种类似于以下方式的方法:
&fl=*,![f]'
[f]
代表一个字段名。
很遗憾,通过查询字符串删除字段名的能力仍然是一个未解决的改进请求。请查看SOLR-3191以获取更多详细信息。
在此改进实现之前,您需要在fl
参数中指定所有19个字段。但是,您可以更新默认的/select
请求处理程序,将您想要返回的19个字段定义为默认设置,并将其应用于除查询字符串中被覆盖的所有查询之外。
下面是示例solrconfig.xml中默认/select
请求处理程序的修改版本:
<requestHandler name="/select" class="solr.SearchHandler">
<!-- default values for query parameters can be specified, these
will be overridden by parameters in the request
-->
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">text</str>
<!-- Only showing 3 fields for this example -->
<str name="fl">field1,field2,field3</str>
</lst>
</requestHandler>
要了解有关这些默认设置和requestHandler配置的更多详细信息,请参阅SolrConfig中的RequestHandlers和SearchComponents。
&fl=*,title:[value v=""]
这里有另外一个更简单的修补程序可用,可以解决此处的简单情况:https://issues.apache.org/jira/browse/SOLR-9467 如果被接受,它将按如下方式工作:
&fl=*,[fl.rm v="title"]
删除标题字段。