ICU 排序关键字字段
编辑ICU 排序关键字字段
编辑排序用于根据特定语言的词序对文档进行排序。icu_collation_keyword
字段类型适用于所有索引,它会像标准关键字字段一样,将术语直接编码为 doc values 字段中的字节和单个索引标记。
默认使用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
- strength 属性确定在比较期间认为重要的最小差异级别。可能的值为:
primary
、secondary
、tertiary
、quaternary
或identical
。有关每个值的更详细说明,请参阅ICU 排序文档。除非排序中另有指定,否则默认为tertiary
。 -
decomposition
- 可能的值:
no
(默认值,但取决于排序)或canonical
。将此分解属性设置为canonical
允许 Collator 正确处理未规范化的文本,产生与文本已规范化时相同的结果。如果设置了no
,则用户有责任确保所有文本在比较之前或获取 CollationKey 之前都已采用适当的形式。调整分解模式允许用户在更快和更完整的排序行为之间进行选择。由于世界上许多语言不需要文本规范化,因此大多数语言环境将no
设置为默认分解模式。
以下选项仅供专家使用
-
alternate
- 可能的值:
shifted
或non-ignorable
。将quaternary
强度的备用处理设置为移位或不可忽略。这归结为忽略标点符号和空格。 -
case_level
- 可能的值:
true
或false
(默认值)。是否需要区分大小写的排序。当 strength 设置为primary
时,这将忽略重音差异。 -
case_first
- 可能的值:
lower
或upper
。用于控制当 strength 为tertiary
时不忽略大小写时哪个大小写先排序。默认值取决于排序。 -
numeric
- 可能的值:
true
或false
(默认值)。数字是否根据其数字表示进行排序。例如,值egg-9
排在值egg-21
之前。 -
variable_top
- 单个字符或缩写。控制
alternate
的可变内容。 -
hiragana_quaternary_mode
- 可能的值:
true
或false
。quaternary
强度下区分片假名和平假名字符。