Solr:搜索带连字符的术语给出0结果

ana*_*ari 5 solr hyphen

我无法在SOLR搜索结果中检索带连字符的术语.例如,当我尝试搜索:超人,超人等时,我应该在搜索结果中看到超人,超人3等标题.

FieldType如下:

<fieldType name="autocomplete_edge" class="solr.TextField">
    <analyzer type="index">
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt" />
        <tokenizer class="solr.KeywordTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="([\.,;:-_])" replacement=" " replace="all" />
        <filter class="solr.EdgeNGramFilterFactory" maxGramSize="30" minGramSize="1" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="([^\w\d\*æøåÆØÅ ])" replacement="" replace="all" />
    </analyzer>
    <analyzer type="query">
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt" />
        <tokenizer class="solr.KeywordTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="([\.,;:-_])" replacement=" " replace="all" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="([^\w\d\*æøåÆØÅ ])" replacement="" replace="all" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="^(.{30})(.*)?" replacement="$1" replace="all" />
    </analyzer>
</fieldType> 
Run Code Online (Sandbox Code Playgroud)

请帮忙.

问候

Jay*_*dra 3

我建议您使用WordDelimiterFilterFactory来满足您的用例。

WordDelimiterFilterFactory 允许您生成可以按特殊字符和数字分割的标记,并维护原始标记,以便它与搜索词匹配。

例如,
generateWordParts将转换super-man->super, man
splitOnNumerics将生成 super-man3 ->super, man, 3
catenateWords将转换super-man->superman
catenateAll将转换super-man3->superman3

所以这将使您能够匹配相同单词的组合