0

我试图找到一种方法来进行两组拼写检查。

一种处理文档中常见单词的拼写检查查询。另一个负责对诸如作者姓名之类的项目进行拼写检查,这些项目可以是多个单词。我希望它能够正常工作,这样即使他们离作者的名字很近,它也会显示建议;但是对于拼写错误的建议将要求单词距离更近。

现在我有一个用于拼写的包罗万象的字段,但它做了很多标记,这会破坏短语;所以我不能真正将它用于短语匹配。

这是拼写检查组件:

<searchComponent name="spellcheck" class="solr.SpellCheckComponent" startup="lazy">
    <!-- <str name="queryAnalyzerFieldType">textSpell</str> -->
    <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.65</float>
        <int name="minPrefix">0</int>
        <int name="maxEdits">1</int>
        <int name="maxInspections">5</int>
        <int name="minQueryLength">3</int>
        <float name="maxQueryFrequency">0.0005</float>
        <float name="thresholdTokenFrequency">.001</float>

        <str name="buildOnCommit">true</str>
    </lst>

    <!-- a spellchecker that can break or combine words.  See "/spell" handler below for usage -->
    <lst name="spellchecker">
        <str name="name">wordbreak</str>
        <str name="classname">solr.WordBreakSolrSpellChecker</str>
        <str name="field">spell</str>
        <str name="combineWords">true</str>
        <str name="breakWords">true</str>
        <int name="maxChanges">1</int>

        <str name="buildOnCommit">true</str>
    </lst>
</searchComponent>

以及实际的拼写字段:

<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" >
        <analyzer>
                <tokenizer class="solr.StandardTokenizerFactory"/>
                <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
                <filter class="solr.EnglishMinimalStemFilterFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
</fieldType>
<field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/>
4

1 回答 1

1

对单独的标记进行拼写检查。您可以在制作短语标记之前添加solr.ShingleFilterFactory到您的分析中。solr.RemoveDuplicatesTokenFilterFactory

于 2013-09-06T05:50:34.083 回答