Search code examples
searchsolr

Solr exact word search


I want to configure my Solr search engine so I get an exact match for the search term I enter.

eg. 'taxes' should return documents with 'taxes' and not 'tax', 'taxation' etc.

Any help or tips would be appreciated.


Solution

  • I presume your field is a TextField, by default solr does a fuzzy search on this field. What you want is to set up your field as a string field and add no tokenizer then you'll get an exact match.

    You can even combine the exact search with a fuzzy search and use DisMax to boost the relative weights.

    Example (schema.xml) :

    <field name="name"             type="string" indexed="true" stored="false" required="true" />
    <field name="nameString"       type="string" indexed="true" stored="false" required="true" />
    <copyField source="name" dest="nameString"/>
    

    Example (solrconfig.xml) :

    <requestHandler name="accounts" class="solr.SearchHandler">
        <lst name="defaults">
          <str name="defType">dismax</str>
          <str name="qf">
            nameString^10.0 name^5.0 description^1.0
          </str>
          <str name="tie">0.1</str>
        </lst>
      </requestHandler>