Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Utf 8 如何使用Solr正确索引西班牙语文档?_Utf 8_Solr - Fatal编程技术网

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

Utf 8 如何使用Solr正确索引西班牙语文档?,utf-8,solr,Utf 8,Solr,如何使用Solr正确索引西班牙语文档 更具体地说,我尝试了两种不同的“字符折叠”技术来索引非ASCII字符,但这两种技术似乎都无法100%地工作。这两种技巧都能让我找到一些有口音的角色,但不能找到其他角色 例如,我使用ASCIIFoldingFilterFactory,如下所示: <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true"> &

如何使用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>
<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>

或者我像这样使用MappingCharFilterFactory:

<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>
<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”这个词,但我一直找不到


我可能做错了什么?

是否有任何理由不为这些字段使用默认字段类型
text\u es
?另一个要考虑的事情是确保编码是正确的,例如有两种编码“NIN”的方法,这可能就是为什么你找不到“SeNior”(参见)。