How to exclude fields in a SOLR query

Itay Moav -Malimovka picture Itay Moav -Malimovka · Apr 19, 2013 · Viewed 12.8k times · Source

I have a SOLR query which should fetch all the fields I store, except one field.
Say I have 20 fields, do I need to hard code the 19 fields I want to fetch in the
&fl=[f],[f],[f],....[f]'
Or is there a way to do something similar to
&fl=*,![f]'

[f] stands for a field name.

Answer

Paige Cook picture Paige Cook · Apr 19, 2013

Unfortunately the ability to remove a field name via the query string is still an outstanding improvement request. Please see SOLR-3191 for more details.

Until this improvement is implemented, you will need to specify all 19 fields in the fl parameter. However, you could update your default /select requestHandler to define the 19 fields that you want to return as a default setting that would be applied to all queries unless it was overridden in the query string.

Here is a modified version of the default /select requestHandler from the example solrconfig.xml:

  <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>

For more details about these default settings and requestHandler configuration, please refer to RequestHandlers and SearchComponents in SolrConfig.