在 Solr 中使用查询分析器对具有特殊字符的单词进行精确搜索



我正在尝试在Solr中搜索完全匹配。问题是这种数据:
考试成绩
考试成绩

test_score测试+分数
如果我使用带有查询测试分数的精确搜索,则只会产生一条记录。
我需要找到所有四个。
一种方法是复制此字段并替换这些特殊字符,这会创建新的索引要求,以便单独保存原始内容。

<fieldType name="text_exact_dehyphen" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="s*-s*" replacement=" "/>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />


有什么方法可以使用我的确切查询来搜索所有带有特殊字符的单词。
谢谢

使用 copyField 将内容复制到多个字段中 - 一个不更改内容的字段(即,如果您需要小写内容,则只是一个字符串字段或带有关键字标记器的文本字段(和一个带有 StandardTokenizer 或类似字段的字段,允许您将"测试分数"与"测试+分数"等相匹配。

然后,您可以使用 edismax 查询解析器并使用qf对这些字段进行不同的加权:qf=field_exact^5 field的精确匹配得分将比其他字段中的匹配项高五倍。

使用 q.op=AND 确保生成的文档中存在所有术语。

最新更新