拼写检查

拼写检查(SpellCheck)组件被设计用于借助其它相似的词元(terms)提供在线查询建议(Suggester) 这种建议的基础可以是Solr中某个field中的terms,外部已有文本文件,或者其它Lucene索引的fileds.

本节主题列表

配置 SpellCheckComponent

在 solrconfig.xml 中定义 Spell Check

第一步, 在 soleconfig.xml 中指定terms的来源, Solr 提供三个来源, 讨论如下.

IndexBasedSpellChecker

IndexBasedSpellChecker 基于一个 Solr 索引作为相似的索引用于拼写检查. 它需要定义一个field作为索引词元的基础;a common practice is to copy terms from some fields (such as title , body , etc.) to another field created for spell checking. Here is a simple example of configuring solrconfig.xml with the IndexBasedSpellChecker :

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
    <lst name="spellchecker">
        <str name="classname">solr.IndexBasedSpellChecker</str>
        <str name="spellcheckIndexDir">./spellchecker</str>
        <str name="field">content</str>
        <str name="buildOnCommit">true</str>
    </lst>
</searchComponent>

第一个元素定义 searchComponent 使用 solr.SpellCheckComponent. classname表示SpellCheckComponent的实现类,这里使用solr.IndexBasedSpellChecker. classname是可选项,如不定义,默认使用IndexBasedSpellChecker.

spellcheckIndexDir定义支持拼写检查索引的目录位置,field定义拼写检查词元的字段源, 最好不要选择获取想要的结果时处理过程复杂的字段.If the field has many word variations from processing synonyms and/or stemming, the dictionary will be created with those variations in addition to more valid spelling data.

最后的buildOnCommit定义是否在每次索引的commit时构建拼写检查索引,它是可选,默认为false.

DirectSolrSpellCheker

DirectSolrSpellCheckerIndexBasedSpellCheck不同,不需要构建一个并行的索引,而是直接使用Solr的索引.这种不需要经常创建索引,即是说,它的terms和原索引的terms是一直同步更新的.可以如下配置solrconfig.xml.

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
    <lst name="spellchecker">
        <str name="name">default</str>
        <str name="field">name</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">4</int>
        <float name="maxQueryFrequency">0.01</float>
        <float name="thresholdTokenFrequency">.01</float>
    </lst>
</searchComponent>

参数

Spell Check 参数说明如下表.

参数 说明
spellcheck 打开或关闭请求的SpellCheck建议,true 生成拼写建议
spellcheck.q or q 拼写查询条件语句

results matching ""

    No results matching ""