词干提取器覆盖令牌过滤器
stemmer_override
令牌过滤器允许您定义自定义词干提取规则,以覆盖 Porter 或 Snowball 等默认词干提取器的行为。当您希望对某些可能无法通过标准词干提取算法正确修改的单词应用特定词干提取行为时,这会很有用。
参数
stemmer_override
令牌过滤器必须配置以下参数之一。
参数 | 数据类型 | 描述 |
---|---|---|
rules | 字符串 | 直接在设置中定义覆盖规则。 |
rules_path | 字符串 | 指定包含自定义规则(映射)的文件路径。该路径可以是绝对路径,也可以是相对于配置目录的路径。 |
示例
以下示例请求创建一个名为 my-index
的新索引,并配置一个带有 stemmer_override
过滤器的分析器。
PUT /my-index
{
"settings": {
"analysis": {
"filter": {
"my_stemmer_override_filter": {
"type": "stemmer_override",
"rules": [
"running, runner => run",
"bought => buy",
"best => good"
]
}
},
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"my_stemmer_override_filter"
]
}
}
}
}
}
生成的词元
使用以下请求检查使用该分析器生成的词元
GET /my-index/_analyze
{
"analyzer": "my_custom_analyzer",
"text": "I am a runner and bought the best shoes"
}
响应包含生成的词元
{
"tokens": [
{
"token": "i",
"start_offset": 0,
"end_offset": 1,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "am",
"start_offset": 2,
"end_offset": 4,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "a",
"start_offset": 5,
"end_offset": 6,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "run",
"start_offset": 7,
"end_offset": 13,
"type": "<ALPHANUM>",
"position": 3
},
{
"token": "and",
"start_offset": 14,
"end_offset": 17,
"type": "<ALPHANUM>",
"position": 4
},
{
"token": "buy",
"start_offset": 18,
"end_offset": 24,
"type": "<ALPHANUM>",
"position": 5
},
{
"token": "the",
"start_offset": 25,
"end_offset": 28,
"type": "<ALPHANUM>",
"position": 6
},
{
"token": "good",
"start_offset": 29,
"end_offset": 33,
"type": "<ALPHANUM>",
"position": 7
},
{
"token": "shoes",
"start_offset": 34,
"end_offset": 39,
"type": "<ALPHANUM>",
"position": 8
}
]
}