如何在solr中搜索包含下划线(_)的文本。例如:This_is_for_testing“。我想搜索”测试“。
答案 0 :(得分:1)
我认为this_is_for_testing是您的索引文本?
StandardTokenizerFilterFactory不会在下划线上进行标记。您需要使用PatternReplaceCharFilterFactory将下划线转换为空格,然后对文本进行标记。
请参阅:PatternReplaceCharFilterFactory
<filter class="solr.PatternReplaceFilterFactory" pattern="_"
replacement=" " replace="all" />
所以索引将是
您只需要在分析方面这样做。
答案 1 :(得分:1)
您可以将solr.WordDelimiterFilterFactory用于此作业。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" catenateWords="1"
generateNumberParts="1" catenateNumbers="0" splitOnNumerics="1"
catenateAll="0" splitOnCaseChange="1"
stemEnglishPossessive="1" preserveOriginal="1" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>