使用apache solr删除重音

use*_*871 4 apache search schema solr

我正在尝试用apache solr使用这个方案进行搜索http://pastie.org/5114389但是当我输入"josé"时,文件被找到但是当我写"jose"时我没有得到结果.

Efetuei在互联网上搜索答案并且必须使用该课程,但是当我插入时没有任何区别.

Pai*_*ook 5

我从您的架构中看到您正在使用ASCIIFoldingFilterFactorytext分配给该default字段的fieldType .但是,它仅适用于该字段的索引.我建议你也将它应用于查询你的字段,以确保你的查询字词被折叠以匹配索引中的项目.通常,在这样的情况下,当您将过滤器工厂添加到索引时,您还会将其添加到查询中,以便正确地转换/比较查询术语和索引术语.

所以我会将您的架构修改为以下内容:

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.ASCIIFoldingFilterFactory" words="mapping-FoldToASCII.txt"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory" />
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.ASCIIFoldingFilterFactory" words="mapping-FoldToASCII.txt"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory" />
  </analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)