如何使Solr的拼写检查器忽略大小写?

时间:2011-03-01 07:27:24

标签: solr spell-checking

你如何要求示例拼写检查器忽略大小写? 我使用的是demo中显示的所有默认值 现在我看到如果我输入 Ancient ,它会问“你的意思是古代吗?”我该怎么办?

ps:我的schema.xml中没有“spell”这个词!它是如何工作的?

2 个答案:

答案 0 :(得分:9)

架构应该有一个名为“spell”的字段类型,用于拼写检查。这将小写拼写检查程序使用的所有单词,因此您不必担心大小写。以下是如何使用此字段类型的示例。

在架构中创建一个字段以进行拼写检查。

<field name="spelling" type="spell" indexed="true" stored="false"/>

然后使用复制字段将数据复制到此字段中。例如,下面的代码会将“product_name”字段复制到拼写检查器中。

<copyField source="product_name" dest="spelling"/>

修改...

抱歉......我虽然“拼写”字段类型是默认架构。将其添加到与其他fieldType标记相同的部分中的架构中。

<fieldType name="spell" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" 
        words="stopwords.txt"/>
    <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" 
        ignoreCase="true" expand="true"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" 
        words="stopwords.txt"/>
    <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
</fieldType>

答案 1 :(得分:0)

请发布你的solrconfig.xml - 我认为这将提供一个线索。

我最好的猜测是solrconfig.xml包含拼写检查器的配置(link),它指定用于生成拼写建议的字段。该字段在schema.xml中没有LowerCaseFilter