zoukankan      html  css  js  c++  java
  • 1.7.7 Spell Checking -拼写检查

    1.拼写检查

       SpellCheck旨在提供一个内联的基于其他,相似,terms的提示.这些提示的基础可以是solr字段中的terms,可以是外部创建要给文本文件,也可以是其他Lucene索引文件.

     1.1 配置SpellCheckComponent组件

      在solrconfig.xml文件中定义.这里有三个拼写检查方法:

      IndexBasedSpellChecker

       IndexBasedSpellChecker使用solr索引为基础,作为拼写检查的并行索引.它要求定义一个基础字段用于索引terms;一个常用的方法就是从一些字段中复制terms(如title,body等)到另外一个创建的需要使用SpellChecker的字段.

      这时一个在solrconfig.xml中配置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>

       这里classname 定义了SpellCheckComponent的实现.这里是solr.IndexBasedSpellChecker.定义classname是可选的,如果没有定义,默认IndexBasedSpellChecker.

      spellcheckIndexDir定义了保存SpellCheck索引的目录位置.field定义了用于拼写检查的源字段(schem.xml中定义).当选择一个字段用于spellcheck索引时,最好避免使用一个大量处理的字段以获得更精确的结果.

      buildOnCommit定义了是否在每次提交(也就是每次新的文档添加到索引的时候)时建立拼写检查索引.这是个可选的选项,如果设置为false,可以被忽略.

     DirectSolrSpellChecker

      DirectSolrSpellChecker从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>

       当选择一个字段用于拼写检查查询时,你需要选择一个相对分析少的字段(特别是分析,如词干提取).注意你需要指定一个字段用于拼写建议.像IndexBasedSpellChecker那样,你也许需要复制字段(如title,body等)的数据到一个专门用于提供SpellCheck的字段.

       许多参数涉及到这个拼写检查器如何如term的提示查询索引.distanceMeasure定义了拼写检查查询的度量标准.参数值"internal"使用了默认的Levenshtein度量标准.

      因为这个拼写检查查询的是主索引,所以你需要限制一下查询频率以避免主查询冲突.accuracy(准确度)设置定义了一个有效建议的临界值.然而maxEdits定于了允许改变term的最大数量.因为大多数拼写错误是1个字母脱离(off).设置为1将会减少可能建议的数量(默认为2),这个值只能是1或者是2.minPrefix定义了terms应该共享的最小字符数,

    设置为1,意思就是拼写检查将会以这个相同的字母开始.

      maxInspections参数定义了在返回结果之前,检查(review)的最大可能匹配的数量.默认时5.

      minQueryLength:定义了在建议提供之前,查询中最少有多少个字符,默认是4.

      maxQueryFrequency:the maximum threshold for the number of documents a term must appear in before being considered as a suggestion.它可以是要给百分数如(.01 或者 1% ),或者是一个绝对值(如4).一个低的阀值适合于小的索引.

      tresholdTokenFrequency:sets the minimum number of documents a term must appear in(term必须出现的最小文档数),也可以用文档数或者绝对值表达.

     FileBasedSpellChecker

      FileBasedSpellChecker使用一个外部文件作为拼写检查字典.如果使用solr作为一个拼写服务,或者拼写建议不需要基于实际的索引中的term.这种情况下比较适合使用这个拼写检查器.在sorlconfig.xml中配置如下:

    <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
        <lst name="spellchecker">
            <str name="classname">solr.FileBasedSpellChecker</str>
            <str name="name">file</str>
            <str name="sourceLocation">spellings.txt</str>
            <str name="characterEncoding">UTF-8</str>
            <str name="spellcheckIndexDir">./spellcheckerFile</str>
        </lst>
    </searchComponent>

      这里不同的是使用sourceLocation来定义terms文件的位置.使用characterEncoding来定义terms文件的编码.

      在上面的例子中,name被用来命名spellchecker的具体定义.在要给solrconfig.xml中可以共存多个定义.当它们在schem.xml中被定义时,name有助于区分它们.如果仅仅只有要给spellcheker被定义,不需要要求定义name.

      WordBreakSolrSpellChecker

        WordBreakSolrSpellChecker

      

       

  • 相关阅读:
    小米手机miui8.5连接电脑
    js数组map方法
    wxui入门
    动画函数封装
    系列属性(offset、scroll、client)
    定时器( setInterval和 setTimeout)
    BOM(浏览器对象模型)
    事件(绑定、解绑、冒泡)
    元素(element)创建
    节点(node)操作
  • 原文地址:https://www.cnblogs.com/a198720/p/4350361.html
Copyright © 2011-2022 走看看