You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solr检索:如何匹配模糊Token及拼接字段的目标文档?

Solr查询优化方案:同时匹配多Token模糊匹配与拼接词文档

核心逻辑

通过布尔查询组合两个独立条件,用OR逻辑覆盖两类目标文档:

  • 保留原有的edismax查询规则,确保至少75%的查询Token匹配
  • 添加针对Shingle生成的拼接词的匹配规则,命中含连续词拼接的文档

具体查询语句

q=(_query_:"{!edismax qf='name' mm='75%'}Game Thrones Clash") OR (_query_:"{!edismax qf='name'}GameThrones OR ThronesClash")

各部分说明

  1. 第一子查询(匹配75%Token)

    • 复用原有edismax配置:{!edismax qf='name' mm='75%'}Game Thrones Clash
    • 因查询含3个Token,mm='75%'自动向上取整为至少匹配2个Token,精准命中id为0553573403、0553573406、0553573407、0553573408的文档
  2. 第二子查询(匹配拼接词)

    • 利用已配置的ShingleFilterFactory生成的拼接词(如GameThrones、ThronesClash)进行精准匹配
    • 直接查询这些拼接词,命中id为0553573409、0553573410的文档

额外验证(可选)

确认text_general字段索引分析链的Shingle配置是否正确(确保拼接词被索引),示例配置如下:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="2" outputUnigrams="true"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
  • outputUnigrams="true"确保原始Token也被索引,保证第一子查询正常工作
  • minShingleSize="2"指定生成2词拼接的Shingle,与需求匹配

内容的提问来源于stack exchange,提问作者user595014

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:39:47