5

In Solr 4, I see that we've configured the default field "df" in the /select request handler:

  <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">id</str>

But id is our unique document field, so all queries are defaulting to "id:my_query", which always returns 0 results.

How do I define which fields should be queried by default?

This is an upgrade from v3 to v4 and this part of it seems to have been broken along the way.

David Parks
  • 30,789
  • 47
  • 185
  • 328

2 Answers2

10

You can use a copy field named "text", copy all your searchable fields into this field and specify it as default search field.

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

You can add fields to be copied to a copy field as follows:

<copyField source="field1" dest="text"/>
<copyField source="field2" dest="text"/>
...
<copyField source="fieldn" dest="text"/>

Note that "text" is the copy field here.

Mavellin
  • 665
  • 7
  • 17
  • How do I copy multiple (but not all) fields, i.e., is this correct: , and I presume you have to configure the field "allsearchable" in the same way that other fields are configured right? – David Parks Mar 06 '13 at 08:25
  • 1
    There's a problem with this method though if you have different field types (that then have different tokenizers) of the source fields that you're copying to "text". Meaning, when you search against text, only the tokenizers applied to the field type of "text" will be applied. – Chris Drumgoole Jun 25 '13 at 11:07
  • @ChrisDrumgoole, I agree with your point that all descriptive values of the fields will be lost once copied to default "text" field. What would be the right approach to solve this? – zalis Nov 26 '17 at 15:55
2

you can use edismax search.

See https://cwiki.apache.org/confluence/display/solr/The+Extended+DisMax+Query+Parser

Check the qf(query field) parameter. You can pass multiple fields to it

lovehq
  • 21
  • 4