Solr多字段查询时type字段筛选secondi-piatti等分类失效问题
问题根因
你遇到的分类筛选条件部分失效的问题,核心是type字段的分词配置不符合精确匹配的需求:
- 你给
type字段配置了带拆分规则的分词器(比如标准分词器、分词过滤器),会把secondi-piatti、primi-piatti这类带横杠的字段值拆成多个独立词条,比如secondi-piatti会被拆为secondi和piatti两个词。 - 查询时
type:secondi-piatti会被解析为type:secondi OR type:piatti,只要分类值里包含piatti(比如primi-piatti)就会命中条件,所以出现了非目标分类的结果。 - 而
dolci是无特殊字符的单个词,分词后和原值一致,所以查询刚好正常生效。
修复方案
临时验证方案
先给查询里的type值加英文双引号强制短语匹配,同时修正你原有查询里的多关键词写法错误(Solr多关键词并列不用逗号分隔),修改后的查询语句如下:
(Title:(pasta pomodoro) OR Description:(pasta pomodoro)) AND type:"secondi-piatti"
执行该查询如果能返回正确结果,即可确认是分词拆分导致的问题。
长期最优方案
分类字段属于固定枚举值,不需要分词,建议直接修改Solr Schema中type字段的类型为不拆分的字符串类型,示例配置(Solr 7及以上版本):
<field name="type" type="string" indexed="true" stored="true" />
修改配置后重建索引,后续所有分类的精确匹配查询都不会再出现该类问题。
内容的提问来源于stack exchange,提问作者Ele975
相关产品推荐
相关产品推荐

