🎉 🎉 【Workshop 北京站 5月15日】搜索服务统一治理(跨引擎多个集群监控管理、流量管控、服务编排) 👉 : 活动免费,立即报名
match_only_text 字段类型
> 文档中心 > 文档中心 > INFINI Easysearch > 功能手册 > 文档建模 > 字段类型 > match_only_text 字段类型

match_only_text 字段类型 #

Introduced 1.10.0

简介 #

match_only_text 是一个为全文搜索优化的字段类型,是 text 类型的变体。它通过省略词条位置、词频和规范化信息来减少存储需求,适合对存储成本敏感但仍需要基本全文搜索功能的场景。

主要特点 #

  1. 存储优化:

    • 不存储位置信息
    • 不存储词频信息
    • 不存储规范化信息
    • 显著减少索引大小
  2. 评分机制:

    • 禁用评分计算
    • 所有匹配文档得分统一为 1.0
  3. 查询支持:

    • 支持大多数查询类型
    • 不支持 interval 查询
    • 不支持 span 查询
    • 支持但不优化短语查询

使用场景 #

适合用于:

  • 需要快速查找包含特定词条的文档
  • 对存储成本敏感的大数据集
  • 不需要复杂相关性排序的场景

不适合用于:

  • 需要基于相关性排序的查询
  • 依赖词条位置或顺序的查询
  • 需要精确短语匹配的场景

映射示例 #

PUT my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "match_only_text"
      }
    }
  }
}

参数配置 #

参数说明默认值
analyzer分析器设置standard
boost评分提升因子1.0
eager_global_ordinals是否预加载全局序号false
fielddata是否启用 fielddatafalse
fields多字段定义-
index是否创建索引true
meta字段元数据-

注意: 虽然支持多种参数设置,但建议保持默认配置以维持其优化效果。

从 text 类型迁移 #

使用 Reindex API 可以将现有的 text 字段迁移到 match_only_text:

// 1. 创建新索引
PUT destination
{
  "mappings": {
    "properties": {
      "title": {
        "type": "match_only_text"
      }
    }
  }
}

// 2. 重建索引
POST _reindex
{
  "source": {
    "index": "source"
  },
  "dest": {
    "index": "destination"
  }
}

使用建议 #

  1. 评估需求:

    • 确认是否需要复杂的相关性排序
    • 确认是否需要位置相关的查询
  2. 存储优化:

    • 尽量使用默认设置
    • 避免启用额外的存储功能
  3. 查询限制:

    • 避免使用依赖位置信息的查询
    • 注意短语查询的性能影响
  4. 性能考虑:

    • 适合大规模数据集
    • 有助于减少存储成本