Trim 标记过滤器
编辑Trim 标记过滤器编辑
从流中的每个标记中删除前导和尾随空格。虽然这会改变标记的长度,但 trim
过滤器*不会*改变标记的偏移量。
trim
过滤器使用 Lucene 的 TrimFilter。
许多常用的标记器,例如 standard
或 whitespace
分词器,默认情况下会删除空格。使用这些分词器时,您不需要添加单独的 trim
过滤器。
示例编辑
要查看 trim
过滤器的工作原理,您首先需要生成一个包含空格的标记。
以下 分析 API 请求使用 keyword
分词器为 " fox "
生成标记。
response = client.indices.analyze( body: { tokenizer: 'keyword', text: ' fox ' } ) puts response
GET _analyze { "tokenizer" : "keyword", "text" : " fox " }
API 返回以下响应。请注意," fox "
标记包含原始文本的空格。请注意,尽管更改了标记的长度,但 start_offset
和 end_offset
仍然相同。
{ "tokens": [ { "token": " fox ", "start_offset": 0, "end_offset": 5, "type": "word", "position": 0 } ] }
要删除空格,请将 trim
过滤器添加到之前的分析 API 请求中。
response = client.indices.analyze( body: { tokenizer: 'keyword', filter: [ 'trim' ], text: ' fox ' } ) puts response
GET _analyze { "tokenizer" : "keyword", "filter" : ["trim"], "text" : " fox " }
API 返回以下响应。返回的 fox
标记不包含任何前导或尾随空格。
{ "tokens": [ { "token": "fox", "start_offset": 0, "end_offset": 5, "type": "word", "position": 0 } ] }
添加到分析器编辑
以下 创建索引 API 请求使用 trim
过滤器来配置新的 自定义分析器。
response = client.indices.create( index: 'trim_example', body: { settings: { analysis: { analyzer: { keyword_trim: { tokenizer: 'keyword', filter: [ 'trim' ] } } } } } ) puts response
PUT trim_example { "settings": { "analysis": { "analyzer": { "keyword_trim": { "tokenizer": "keyword", "filter": [ "trim" ] } } } } }