David Parks
David Parks

Reputation: 32071

Solr4 currently only looks at the default "df" field, how can we search multiple fields?

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.

Upvotes: 5

Views: 9090

Answers (2)

lovehq
lovehq

Reputation: 21

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

Upvotes: 2

Mavellin
Mavellin

Reputation: 665

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.

Upvotes: 10

Related Questions