我正在使用 UAX29URLEmailTokenizerFactory tokenizer 在 SOLR 中索引一些 URI。问题是我的一些 URI 包含加号字符,SOLR 将其解释为空格并分割 URI。这个问题可以通过一些巧妙的“+”字符转义来解决吗?我在分析器中尝试了“+”,但得到了相同的结果。 这是我对字段的具体配置:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
最佳答案
您可以在分析器之前使用CharacterFilter(例如PatternReplaceCharFilterFactory)。这个link有一些很好的信息。我能想到的一个解决方案是将 + 字符替换为其他字符 - 然后当您提供此链接时,请记住将其替换回来。
另一件需要研究的事情是,将其替换为加号(%2B)的 URL 编码值,并查看分析器是否将其视为空格。
关于solr - SOLR 中的索引加字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11033100/