如何使用Solr正确索引西班牙语文档?

时间:2019-11-21 21:11:46

标签: utf-8 solr

如何使用Solr正确索引西班牙语文档?

更具体地说,我尝试了两种不同的“字符折叠”技术来索引非ASCII字符,但似乎没有一种在100%的时间内都能正常工作。两种技术都可以让我找到一些带有重音符号的字符,而其他人则找不到。

例如,我像这样使用ASCIIFoldingFilterFactory:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
 <analyzer type="index">
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.ASCIIFoldingFilterFactory"/>
  <filter class="solr.StopFilterFactory" words="stopwordsspanish.txt" ignoreCase="true"/>
  <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
 <analyzer type="query">
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.ASCIIFoldingFilterFactory"/>
  <filter class="solr.StopFilterFactory" words="stopwordsspanish.txt" ignoreCase="true"/>
  <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
  <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
</fieldType>

或者我像这样使用MappingCharFilterFactory:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
 <analyzer type="index">
  <charFilter class="solr.MappingCharFilterFactory"  mapping="mapping-FoldToASCII.txt"/>
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.StopFilterFactory" words="stopwordsspanish.txt" ignoreCase="true"/>
  <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
 <analyzer type="query">
  <charFilter class="solr.MappingCharFilterFactory"  mapping="mapping-FoldToASCII.txt"/>
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.StopFilterFactory" words="stopwordsspanish.txt" ignoreCase="true"/>
  <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
  <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
</fieldType>

在两种情况下,我都可以搜索并找到一些带有非ASCII字符的单词,而有些则没有。例如,我可以找到带有“presentará”一词的文档,但不一定是全部。我知道我的语料库包含“señor”一词,但我永远找不到。

我可能做错了什么?

0 个答案:

没有答案