SOLR地址搜索同义词配置后如何直接返回查询词的同义词替换结果
问题根因
SynonymGraphFilterFactory默认expand=true,做同义词转换时会同时保留原词和同义词,查询CLARA CT时会生成CLARA AND (CT OR COURT)的查询逻辑,因此索引中存在的CLARA CT相关结果也会被命中。- 你同时在索引和查询阶段配置了同义词处理,会导致索引中同时存入原词和同义词的分词结果,进一步放大了误匹配的概率。
修正配置
调整为单向纯替换的同义词规则,只在查询阶段做替换,索引阶段保留原始内容分词即可:
<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <!-- 索引阶段移除同义词处理,仅存储原始内容分词结果 --> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <!-- 新增expand=false参数,完全用同义词替换原词,不保留原词做OR匹配 --> <filter class="solr.SynonymGraphFilterFactory" synonyms="mysynonyms.txt" expand="false"/> </analyzer> </fieldType>
同时修改同义词配置文件mysynonyms.txt,将原来的并列写法CT,COURT改为单向映射写法CT => COURT,避免反向替换。
门牌号适配说明
因为你未索引门牌号字段,查询时携带的门牌号5属于索引中不存在的分词,如果需要完全保留在查询结果中,可以额外配置查询解析器忽略数字类分词的匹配校验,或者将门牌号抽为独立的可选查询字段,不参与街道名称的核心匹配逻辑。
内容的提问来源于stack exchange,提问作者user2260040
相关产品推荐
相关产品推荐

