https://lucene.apache.org/solr/guide/8_1/spell-checking.htmlで説明されているように、代替のスペルオプションを生成するようにスペルチェックコンポーネントを構成する必要があります。
このタスクは、次の手順で構成されています。
まず、schema.xml
スペルチェックフィールドでを更新します。これは多くの場合、新しいフィールドを作成し、複数のフィールドを1つのspellcheck
フィールドにコピーすることを意味します。
<field name="spellcheck" type="text_general"
indexed="true"
stored="false"
multiValued="true"/>
<copyField source="id" dest="spellcheck"/>
<copyField source="name" dest="spellcheck"/>
<copyField source="description" dest="spellcheck"/>
<copyField source="longdescription" dest="spellcheck"/>
<copyField source="category" dest="spellcheck"/>
<copyField source="source" dest="spellcheck"/>
<copyField source="merchant" dest="spellcheck"/>
<copyField source="contact" dest="spellcheck"/>
solrconfig.xml
リクエストハンドラを更新し、を作成しsolr.SpellCheckComponent
て検索ハンドラに追加します。
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<!-- decide between dictionary based vs index based spelling suggestions,
in most cases it makes sense to use index based spell checker
as it only generates terms which are
actually present in your search corpus -->
<str name="classname">solr.IndexBasedSpellChecker</str>
<!-- field to use -->
<str name="field">spellcheck</str>
<!-- buildOnCommit|buildOnOptimize -->
<str name="buildOnCommit">true</str>
<!-- $solr.solr.home/data/spellchecker-->
<str name="spellcheckIndexDir">./spellchecker</str>
<str name="accuracy">0.7</str>
<float name="thresholdTokenFrequency">.0001</float>
</lst>
</searchComponent>
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">defaultSearchField</str>
<!-- spell check component configuration -->
<str name="spellcheck">true</str>
<str name="spellcheck.count">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.maxCollationTries">5</str>
</lst>
<!-- add spell check processing after
the default search component. This is
the search component name. -->
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
コーパスのインデックスを再作成
テストの提案が機能しています。例えば、
http:// localhost:8983 / solr / select /?q = Coachin
{
"responseHeader": {
"status": 0,
"QTime": 12,
"params": {
"indent": "true",
"q": "coachin"
}
},
"response": {
"numFound": 0,
"start": 0,
"docs": []
},
"spellcheck": {
"suggestions": [
"coachin", {
"numFound": 1,
"startOffset": 0,
"endOffset": 7,
"suggestion": ["cochin"]
}
]
}
}