修剪词元过滤器
编辑修剪词元过滤器
编辑从流中的每个词元中删除前导和尾随空格。虽然这会改变词元的长度,但 trim
过滤器不会改变词元的偏移量。
trim
过滤器使用 Lucene 的 TrimFilter。
许多常用的词元生成器,例如 standard
或 whitespace
词元生成器,默认情况下会删除空格。当使用这些词元生成器时,您不需要添加单独的 trim
过滤器。
示例
编辑要查看 trim
过滤器的工作方式,您首先需要生成一个包含空格的词元。
以下 分析 API 请求使用 keyword
词元生成器为 " fox "
生成一个词元。
resp = client.indices.analyze( tokenizer="keyword", text=" fox ", ) print(resp)
response = client.indices.analyze( body: { tokenizer: 'keyword', text: ' fox ' } ) puts response
const response = await client.indices.analyze({ tokenizer: "keyword", text: " fox ", }); console.log(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 请求。
resp = client.indices.analyze( tokenizer="keyword", filter=[ "trim" ], text=" fox ", ) print(resp)
response = client.indices.analyze( body: { tokenizer: 'keyword', filter: [ 'trim' ], text: ' fox ' } ) puts response
const response = await client.indices.analyze({ tokenizer: "keyword", filter: ["trim"], text: " fox ", }); console.log(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
过滤器配置新的 自定义分析器。
resp = client.indices.create( index="trim_example", settings={ "analysis": { "analyzer": { "keyword_trim": { "tokenizer": "keyword", "filter": [ "trim" ] } } } }, ) print(resp)
response = client.indices.create( index: 'trim_example', body: { settings: { analysis: { analyzer: { keyword_trim: { tokenizer: 'keyword', filter: [ 'trim' ] } } } } } ) puts response
const response = await client.indices.create({ index: "trim_example", settings: { analysis: { analyzer: { keyword_trim: { tokenizer: "keyword", filter: ["trim"], }, }, }, }, }); console.log(response);
PUT trim_example { "settings": { "analysis": { "analyzer": { "keyword_trim": { "tokenizer": "keyword", "filter": [ "trim" ] } } } } }