我正在尝试在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
确保生成的文档中存在所有术语。