長さトークンフィルター
指定された文字数より短いまたは長いトークンを削除します。たとえば、length
フィルターを使用して、2文字未満のトークンと5文字を超えるトークンを除外できます。
このフィルターはLuceneのLengthFilterを使用します。
## 例
次の[analyze API](/read/elasticsearch-8-15/1a51b9d359d8a54c.md)リクエストは、`````length`````フィルターを使用して4文字を超えるトークンを削除します:
#### Python
``````python
resp = client.indices.analyze(
tokenizer="whitespace",
filter=[
{
"type": "length",
"min": 0,
"max": 4
}
],
text="the quick brown fox jumps over the lazy dog",
)
print(resp)
`
Ruby
response = client.indices.analyze(
body: {
tokenizer: 'whitespace',
filter: [
{
type: 'length',
min: 0,
max: 4
}
],
text: 'the quick brown fox jumps over the lazy dog'
}
)
puts response
Js
const response = await client.indices.analyze({
tokenizer: "whitespace",
filter: [
{
type: "length",
min: 0,
max: 4,
},
],
text: "the quick brown fox jumps over the lazy dog",
});
console.log(response);
コンソール
GET _analyze
{
"tokenizer": "whitespace",
"filter": [
{
"type": "length",
"min": 0,
"max": 4
}
],
"text": "the quick brown fox jumps over the lazy dog"
}
フィルターは次のトークンを生成します:
テキスト
[ the, fox, over, the, lazy, dog ]
アナライザーに追加
次のcreate index APIリクエストは、length
フィルターを使用して新しいカスタムアナライザーを構成します。
Python
resp = client.indices.create(
index="length_example",
settings={
"analysis": {
"analyzer": {
"standard_length": {
"tokenizer": "standard",
"filter": [
"length"
]
}
}
}
},
)
print(resp)
Ruby
response = client.indices.create(
index: 'length_example',
body: {
settings: {
analysis: {
analyzer: {
standard_length: {
tokenizer: 'standard',
filter: [
'length'
]
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "length_example",
settings: {
analysis: {
analyzer: {
standard_length: {
tokenizer: "standard",
filter: ["length"],
},
},
},
},
});
console.log(response);
コンソール
PUT length_example
{
"settings": {
"analysis": {
"analyzer": {
"standard_length": {
"tokenizer": "standard",
"filter": [ "length" ]
}
}
}
}
}
設定可能なパラメータ
min
- (オプション、整数) トークンの最小文字数。短いトークンは出力から除外されます。デフォルトは
0
です。 max
- (オプション、整数) トークンの最大文字数。長いトークンは出力から除外されます。デフォルトは
Integer.MAX_VALUE
で、2^31-1
または2147483647
です。
カスタマイズ
たとえば、次のリクエストは、2文字未満のトークンと10文字を超えるトークンを削除するカスタム`````length`````フィルターを作成します:
#### Python
``````python
resp = client.indices.create(
index="length_custom_example",
settings={
"analysis": {
"analyzer": {
"whitespace_length_2_to_10_char": {
"tokenizer": "whitespace",
"filter": [
"length_2_to_10_char"
]
}
},
"filter": {
"length_2_to_10_char": {
"type": "length",
"min": 2,
"max": 10
}
}
}
},
)
print(resp)
`
Ruby
response = client.indices.create(
index: 'length_custom_example',
body: {
settings: {
analysis: {
analyzer: {
"whitespace_length_2_to_10_char": {
tokenizer: 'whitespace',
filter: [
'length_2_to_10_char'
]
}
},
filter: {
"length_2_to_10_char": {
type: 'length',
min: 2,
max: 10
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "length_custom_example",
settings: {
analysis: {
analyzer: {
whitespace_length_2_to_10_char: {
tokenizer: "whitespace",
filter: ["length_2_to_10_char"],
},
},
filter: {
length_2_to_10_char: {
type: "length",
min: 2,
max: 10,
},
},
},
},
});
console.log(response);
コンソール
PUT length_custom_example
{
"settings": {
"analysis": {
"analyzer": {
"whitespace_length_2_to_10_char": {
"tokenizer": "whitespace",
"filter": [ "length_2_to_10_char" ]
}
},
"filter": {
"length_2_to_10_char": {
"type": "length",
"min": 2,
"max": 10
}
}
}
}
}