Text 字段类型
> 文档中心 > 文档中心 > INFINI Easysearch > 功能手册 > 文档建模 > 字段类型 > 字符串字段类型 > Text 字段类型

Text 字段类型 #

text 字段类型包含经过分词器分析的字符串。它用于全文搜索,因为它允许部分匹配。对多个词条的搜索可以匹配其中的一部分而不是全部。根据分词器的不同,搜索结果可以是大小写不敏感的、词干化的、去除停用词的、应用同义词的等等。

如果您需要进行精确值搜索,请将字段映射为 keyword 类型。

代码样例 #

创建一个带有 text 字段的映射:

PUT movies
{
  "mappings" : {
    "properties" : {
      "title" : {
        "type" : "text"
      }
    }
  }
}

参数说明 #

下表列出了 text 字段类型接受的参数。所有参数都是可选的。

参数描述
analyzer用于此字段的分析器。默认情况下,它将在索引时和搜索时使用。要在搜索时覆盖它,请设置 search_analyzer 参数。默认是 standard 分析器,它使用基于语法的分词,并基于 Unicode 文本分段算法。
boost浮点值,指定此字段对相关性分数的权重。大于 1.0 的值会增加字段的相关性。0.0 到 1.0 之间的值会降低字段的相关性。默认值为 1.0。
eager_global_ordinals指定是否应在刷新时立即加载全局序号。如果该字段经常用于聚合,此参数应设置为 true。默认值为 false
fielddata布尔值,指定是否访问此字段的已分析标记以进行排序、聚合和脚本编写。默认值为 false
fielddata_frequency_filterJSON 对象,指定仅将文档频率在 minmax 值之间的已分析标记加载到内存中(以绝对数字或百分比提供)。频率按段计算。参数:minmaxmin_segment_size。默认加载所有已分析的标记。
fields要以多种方式索引同一个字符串(例如,作为 keyword 和 text),请提供 fields 参数。您可以指定字段的一个版本用于搜索,另一个版本用于排序和聚合。
index布尔值,指定字段是否应可搜索。默认值为 true
index_options指定要存储在索引中用于搜索和突出显示的信息。有效值:docs(仅文档编号)、freqs(文档编号和词频)、positions(文档编号、词频和词位置)、offsets(文档编号、词频、词位置以及开始和结束字符偏移量)。默认值为 positions。
index_phrases布尔值,指定是否单独索引 2-gram。2-gram 是此字段字符串中两个连续单词的组合。导致精确短语查询更快但索引更大。当不删除停用词时效果最好。默认值为 false
index_prefixesJSON 对象,指定单独索引词条前缀。前缀中的字符数在 min_charsmax_chars 之间(包含)。导致前缀搜索更快但索引更大。可选参数:min_charsmax_chars。默认 min_chars 为 2,max_chars 为 5。
meta接受此字段的元数据。
norms布尔值,指定在计算相关性分数时是否应使用字段长度。默认值为 false
position_increment_gap当文本字段被分析时,它们被分配位置。如果一个字段包含一个字符串数组,并且这些位置是连续的,这将导致可能跨不同数组元素匹配。为防止这种情况,在连续的数组元素之间插入一个人工间隙。您可以通过指定整数 position_increment_gap 来更改此间隙。注意:如果 slop 大于 position_element_gap,可能会发生跨不同数组元素的匹配。默认值为 100。
similarity用于计算相关性分数的排名算法。默认值为 BM25
term_vector布尔值,指定是否应存储此字段的词向量。默认值为 no

词向量参数 #

词向量在分析过程中产生。它包含:

  • 词条列表
  • 每个词条的序数位置
  • 搜索字符串在字段中的起始和结束字符偏移量
  • 负载 Payloads(如果可用)。每个词条可以有与词条位置相关的自定义二进制数据

term_vector 字段包含一个接受以下参数的 JSON 对象:

参数存储的值
no无。这是默认值。
yes字段中的词条。
with_offsets词条和字符偏移量。
with_positions_offsets词条、位置和字符偏移量。
with_positions_offsets_payloads词条、位置、字符偏移量和负载。
with_positions词条和位置。
with_positions_payloads词条、位置和负载。

存储位置对于邻近查询很有用。存储字符偏移量对于突出显示很有用。

词向量参数示例 #

创建一个带有存储字符偏移量的词向量的文本字段的映射:

PUT testindex
{
  "mappings" : {
    "properties" : {
      "dob" : {
        "type" : "text",
        "term_vector": "with_positions_offsets"
      }
    }
  }
}

索引一个带有文本字段的文档:

PUT testindex/_doc/1
{
  "dob" : "The patient's date of birth."
}

查询"date of birth"并在原始字段中突出显示它:

GET testindex/_search
{
  "query": {
    "match": {
      "dob": "date of birth"
    }
  },
  "highlight": {
    "fields": {
      "dob": {}
    }
  }
}

返回内容中的"date of birth"被突出显示:

{
  "took": 854,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 0.8630463,
    "hits": [
      {
        "_index": "testindex",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.8630463,
        "_source": {
          "text": "The patient's date of birth."
        },
        "highlight": {
          "text": ["The patient's <em>date</em> <em>of</em> <em>birth</em>."]
        }
      }
    ]
  }
}