Documentation > Wiki > Enable Spellcheck in Solr

Enable Spellcheck In Solr

Enabling spellcheck in Apache Solr is a useful feature that allows you to provide suggestions for misspelled or incorrect search queries. To enable spellcheck in Solr, you need to configure your Solr schema, Solr configuration files, and query parameters. Here's a step-by-step guide on how to do it:

  1. Schema Configuration:
    1. Open your Solr schema configuration file (usually named schema.xml) located in your Solr core's conf directory.
    2. Add a field type that specifies how you want to handle text for spellchecking. You can use the TextField type, for example:
      1. <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        </fieldType>
    3. Define a new field that uses this field type for your spellcheck suggestions. This field should be used for indexing your content.
      1. <field name="content" type="textSpell" indexed="true" stored="true"/>
    4. Add a new field for the spellcheck dictionary, where Solr will store its spellcheck suggestions.
      1. <field name="spell" type="textSpell" indexed="true" stored="false" multiValued="true"/>
  2. Solr Configuration:
    1. Open your Solr configuration file (usually named solrconfig.xml) located in your Solr core's conf directory.
    2. Find the <requestHandler> configuration section for your search endpoint (e.g., /select) and add the spellcheck component to it. You should also configure other parameters as needed.
      1. <requestHandler name="/select" class="solr.SearchHandler"> 
        <!-- ... -->
        <arr name="last-components">
        <str>spellcheck</str>
        </arr>
        </requestHandler>
  3. Spellcheck Component Configuration:
    1. Still in the solrconfig.xml file, configure the spellcheck component. You can define its settings under the <searchComponent> section.
      1. <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
        <lst name="spellchecker">
        <str name="name">default</str>
        <str name="field">spell</str>
        <str name="classname">solr.DirectSolrSpellChecker</str>
        <str name="distanceMeasure">internal</str>
        <float name="accuracy">0.5</float>
        <int name="maxEdits">2</int>
        <int name="minPrefix">1</int>
        <int name="maxInspections">5</int>
        <int name="minQueryLength">3</int>
        <float name="maxQueryFrequency">0.5</float>
        </lst>
        </searchComponent>
  4. Reindex Data:
    1. After making these schema and configuration changes, you need to reindex your data.
  5. Querying with Spellcheck:
    1. When making a search query to Solr, you can enable spellcheck suggestions by adding the spellcheck parameter to your query:
      1. /select?q=your_query&spellcheck=true
    2. Solr will return spellcheck suggestions in the response, typically under the spellcheck section.

By following these steps, you should be able to enable spellcheck in Apache Solr and provide search query suggestions for misspelled terms. Make sure to adjust the configuration parameters according to your specific use case and requirements.