4

我正在尝试使用此方案http://pastie.org/5114389使用 apache solr 进行搜索,但是当我键入“josé”时,找到了文件,但是当我写“jose”时,我没有得到结果。

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

4

1 回答 1

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>
于 2012-10-25T13:46:01.590 回答