如何排除SOLR查询中的字段

Ita*_*vka 10 solr solr-query-syntax

我有一个SOLR查询,它应该获取我存储的所有字段,除了一个字段.
假设我有20个字段,我是否需要硬编码我想要获取的19个字段
&fl=[f],[f],[f],....[f]'
或者是否有办法做类似的事情
&fl=*,![f]'

[f] 代表字段名称.

Pai*_*ook 15

不幸的是,通过查询字符串删除字段名称的能力仍然是一个出色的改进请求.有关详细信息,请参阅SOLR-3191.

在实施此改进之前,您需要在fl参数中指定所有19个字段.但是,您可以更新默认的/selectrequestHandler,以定义要作为默认设置返回的19个字段,这些字段将应用于所有查询,除非它在查询字符串中被覆盖.

以下是/select示例solrconfig.xml中默认requestHandler 的修改版本:

  <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>
Run Code Online (Sandbox Code Playgroud)

有关这些默认设置和requestHandler配置的更多详细信息,请参阅SolrConfig中的RequestHandlers和SearchComponents.

  • 我希望有这个功能. (4认同)

And*_*rea 7

另一种选择可能是:您想要包含的字段应该共享一个共同的前缀; 最重要的是,你可以在你的fl中使用globs.因此,例如,假设前缀为toincincluded_,您可以使用类似的fl值

被包括_*