当请求lå时,Apache solr搜索返回日志结果;g、 lö;g等(utf-8字符)
我有一个站点,其中Drupal、ApacheSolr和tomcat是ApacheSolr的主机。我编辑了tomcat schema.xml以支持utf-8。这使得搜索utf-8字符成为可能 但是,实际结果集的工作出乎意料。搜索包含utf-8字符的内容时,ApacheSolr也会返回包含“等效”字符的内容 范例当请求lå时,Apache solr搜索返回日志结果;g、 lö;g等(utf-8字符),apache,solr,Apache,Solr,我有一个站点,其中Drupal、ApacheSolr和tomcat是ApacheSolr的主机。我编辑了tomcat schema.xml以支持utf-8。这使得搜索utf-8字符成为可能 但是,实际结果集的工作出乎意料。搜索包含utf-8字符的内容时,ApacheSolr也会返回包含“等效”字符的内容 范例 搜索lag(law)将返回带有låg(low)的内容。瑞典语里有很多不同的东西。这是否可以配置。在这种情况下,where?看起来您的模式中有ASCIIFoldingFilterFactor
搜索lag(law)将返回带有låg(low)的内容。瑞典语里有很多不同的东西。这是否可以配置。在这种情况下,where?看起来您的模式中有ASCIIFoldingFilterFactory设置
这可由solr配置。当Solr为记录编制索引时(请参见type=“index”),它将使用您在模式中定义的分析器和过滤器。此外,当发出搜索时(请参见type=“query”),查询分析器和过滤器将再次分析搜索。这是模式中定义的内容。我建议使用Solr direct web界面,分析您的查询以及索引过程 例如:
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.StopFilterFactory" enablePositionIncrements="true" ignoreCase="true" words="stopwords.txt"/>
<filter catenateAll="0" catenateNumbers="1" catenateWords="1" class="solr.WordDelimiterFilterFactory" generateNumberParts="1" generateWordParts="1" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.StopFilterFactory" enablePositionIncrements="true" ignoreCase="true" words="stopwords.txt"/>
<filter catenateAll="0" catenateNumbers="0" catenateWords="0" class="solr.WordDelimiterFilterFactory" generateNumberParts="1" generateWordParts="1" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
用于将ISO拉丁1字符集(ISO-8859-1)中的重音字符替换为其非重音等效字符
我建议您再看一次您的模式。好的,谢谢
取消注释
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
在type=“index”och type=“query”中取消对上面一行的注释就成功了
注意
为此干杯,我会调查的。是的,可能是这样,我会调查的。非常感谢。
<analyzer type="query">
<!--
<filter class="solr.ASCIIFoldingFilterFactory"/>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
-->
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true"
/>
<filter class="solr.WordDelimiterFilterFactory"
protected="protwords.txt"
generateWordParts="1"
generateNumberParts="1"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
splitOnCaseChange="1"
preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>