ICU 排序关键字字段
编辑ICU 排序关键字字段
编辑排序用于按照特定于语言的词序对文档进行排序。icu_collation_keyword
字段类型可用于所有索引,并且会将术语直接编码为文档值字段中的字节,并像标准的关键字字段一样仅使用单个索引标记。
默认使用DUCET 排序,这是对语言中性排序的最佳尝试。
以下是如何设置字段以按“电话簿”顺序排序德语名称的示例
PUT my-index-000001 { "mappings": { "properties": { "name": { "type": "text", "fields": { "sort": { "type": "icu_collation_keyword", "index": false, "language": "de", "country": "DE", "variant": "@collation=phonebook" } } } } } } GET /my-index-000001/_search { "query": { "match": { "name": "Fritz" } }, "sort": "name.sort" }
|
|
|
|
一个示例查询,该查询在 |
ICU 排序关键字字段的参数
编辑icu_collation_keyword
字段接受以下参数
|
是否应将字段以列式方式存储在磁盘上,以便以后可以用于排序、聚合或脚本编写?接受 |
|
该字段是否可搜索?接受 |
|
接受一个字符串值,该值将替换任何显式的 |
长度超过 |
|
|
字段值是否应与 |
|
多字段允许以多种方式索引相同的字符串值以用于不同目的,例如用于搜索的一个字段和用于排序和聚合的多字段。 |
排序选项
编辑-
strength
- 强度属性确定在比较期间被认为显着的最小差异级别。可能的值为:
primary
、secondary
、tertiary
、quaternary
或identical
。有关每个值的更详细说明,请参阅ICU 排序文档。除非在排序中另有说明,否则默认为tertiary
。 -
decomposition
- 可能的值:
no
(默认,但依赖于排序)或canonical
。将此分解属性设置为canonical
允许排序器正确处理未规范化的文本,产生与文本规范化时相同的结果。如果设置为no
,则用户有责任确保在比较或获取排序键之前,所有文本都已采用适当的形式。调整分解模式允许用户在更快和更完整的排序行为之间进行选择。由于世界上许多语言不需要文本规范化,因此大多数区域设置将no
设置为默认分解模式。
以下选项仅供专家使用
-
alternate
- 可能的值:
shifted
或non-ignorable
。将强度quaternary
的替代处理设置为移位或不可忽略。这归结为忽略标点符号和空格。 -
case_level
- 可能的值:
true
或false
(默认)。是否需要区分大小写排序。当强度设置为primary
时,这将忽略重音差异。 -
case_first
- 可能的值:
lower
或upper
。当强度为tertiary
时不忽略大小写时,控制哪个大小写首先排序很有用。默认值取决于排序。 -
numeric
- 可能的值:
true
或false
(默认)。是否根据数字表示形式对数字进行排序。例如,值egg-9
排在值egg-21
之前。 -
variable_top
- 单字符或缩写。控制
alternate
的变量是什么。 -
hiragana_quaternary_mode
- 可能的值:
true
或false
。在quaternary
强度中区分片假名和片假名字符。