トランケートトークンフィルター
指定された文字数制限を超えるトークンを切り捨てます。この制限はデフォルトで 10
ですが、length
パラメータを使用してカスタマイズできます。
たとえば、truncate
フィルターを使用して、すべてのトークンを 3
文字以下に短縮し、jumping fox
を jum fox
に変更できます。
このフィルターは、Lucene の TruncateTokenFilter を使用します。
例
次の analyze API リクエストは、truncate
フィルターを使用して、the quinquennial extravaganza carried on
で 10 文字を超えるトークンを短縮します:
Python
resp = client.indices.analyze(
tokenizer="whitespace",
filter=[
"truncate"
],
text="the quinquennial extravaganza carried on",
)
print(resp)
Ruby
response = client.indices.analyze(
body: {
tokenizer: 'whitespace',
filter: [
'truncate'
],
text: 'the quinquennial extravaganza carried on'
}
)
puts response
Js
const response = await client.indices.analyze({
tokenizer: "whitespace",
filter: ["truncate"],
text: "the quinquennial extravaganza carried on",
});
console.log(response);
コンソール
GET _analyze
{
"tokenizer" : "whitespace",
"filter" : ["truncate"],
"text" : "the quinquennial extravaganza carried on"
}
フィルターは次のトークンを生成します:
テキスト
[ the, quinquenni, extravagan, carried, on ]
アナライザーに追加
次の create index API リクエストは、truncate
フィルターを使用して新しい カスタムアナライザー を構成します。
Python
resp = client.indices.create(
index="custom_truncate_example",
settings={
"analysis": {
"analyzer": {
"standard_truncate": {
"tokenizer": "standard",
"filter": [
"truncate"
]
}
}
}
},
)
print(resp)
Ruby
response = client.indices.create(
index: 'custom_truncate_example',
body: {
settings: {
analysis: {
analyzer: {
standard_truncate: {
tokenizer: 'standard',
filter: [
'truncate'
]
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "custom_truncate_example",
settings: {
analysis: {
analyzer: {
standard_truncate: {
tokenizer: "standard",
filter: ["truncate"],
},
},
},
},
});
console.log(response);
コンソール
PUT custom_truncate_example
{
"settings" : {
"analysis" : {
"analyzer" : {
"standard_truncate" : {
"tokenizer" : "standard",
"filter" : ["truncate"]
}
}
}
}
}
設定可能なパラメータ
length
- (オプション、整数)各トークンの文字数制限。この制限を超えるトークンは切り捨てられます。デフォルトは
10
です。
カスタマイズ
truncate
フィルターをカスタマイズするには、それを複製して新しいカスタムトークンフィルターの基礎を作成します。設定可能なパラメータを使用してフィルターを変更できます。
たとえば、次のリクエストは、truncate
フィルター 5_char_trunc
を作成し、トークンを length
の 5
文字以下に短縮します:
Python
resp = client.indices.create(
index="5_char_words_example",
settings={
"analysis": {
"analyzer": {
"lowercase_5_char": {
"tokenizer": "lowercase",
"filter": [
"5_char_trunc"
]
}
},
"filter": {
"5_char_trunc": {
"type": "truncate",
"length": 5
}
}
}
},
)
print(resp)
Ruby
response = client.indices.create(
index: '5_char_words_example',
body: {
settings: {
analysis: {
analyzer: {
"lowercase_5_char": {
tokenizer: 'lowercase',
filter: [
'5_char_trunc'
]
}
},
filter: {
"5_char_trunc": {
type: 'truncate',
length: 5
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "5_char_words_example",
settings: {
analysis: {
analyzer: {
lowercase_5_char: {
tokenizer: "lowercase",
filter: ["5_char_trunc"],
},
},
filter: {
"5_char_trunc": {
type: "truncate",
length: 5,
},
},
},
},
});
console.log(response);
コンソール
PUT 5_char_words_example
{
"settings": {
"analysis": {
"analyzer": {
"lowercase_5_char": {
"tokenizer": "lowercase",
"filter": [ "5_char_trunc" ]
}
},
"filter": {
"5_char_trunc": {
"type": "truncate",
"length": 5
}
}
}
}
}