ユニークトークンフィルター
ストリームから重複トークンを削除します。たとえば、unique
フィルターを使用してthe lazy lazy dog
をthe lazy dog
に変更できます。
`````only_on_same_position`````が`````true`````の場合、`````unique`````フィルターは[`````remove_duplicates`````](/read/elasticsearch-8-15/1e4737fca16e00cc.md)フィルターと同じように機能します。
## 例
次の[分析API](/read/elasticsearch-8-15/1a51b9d359d8a54c.md)リクエストは、`````unique`````フィルターを使用して`````the quick fox jumps the lazy fox`````から重複トークンを削除します:
#### Python
``````python
resp = client.indices.analyze(
tokenizer="whitespace",
filter=[
"unique"
],
text="the quick fox jumps the lazy fox",
)
print(resp)
`
Ruby
response = client.indices.analyze(
body: {
tokenizer: 'whitespace',
filter: [
'unique'
],
text: 'the quick fox jumps the lazy fox'
}
)
puts response
Js
const response = await client.indices.analyze({
tokenizer: "whitespace",
filter: ["unique"],
text: "the quick fox jumps the lazy fox",
});
console.log(response);
コンソール
GET _analyze
{
"tokenizer" : "whitespace",
"filter" : ["unique"],
"text" : "the quick fox jumps the lazy fox"
}
フィルターはthe
とfox
の重複トークンを削除し、次の出力を生成します:
テキスト
[ the, quick, fox, jumps, lazy ]
アナライザーに追加
次のインデックス作成APIリクエストは、unique
フィルターを使用して新しいカスタムアナライザーを構成します。
Python
resp = client.indices.create(
index="custom_unique_example",
settings={
"analysis": {
"analyzer": {
"standard_truncate": {
"tokenizer": "standard",
"filter": [
"unique"
]
}
}
}
},
)
print(resp)
Ruby
response = client.indices.create(
index: 'custom_unique_example',
body: {
settings: {
analysis: {
analyzer: {
standard_truncate: {
tokenizer: 'standard',
filter: [
'unique'
]
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "custom_unique_example",
settings: {
analysis: {
analyzer: {
standard_truncate: {
tokenizer: "standard",
filter: ["unique"],
},
},
},
},
});
console.log(response);
コンソール
PUT custom_unique_example
{
"settings" : {
"analysis" : {
"analyzer" : {
"standard_truncate" : {
"tokenizer" : "standard",
"filter" : ["unique"]
}
}
}
}
}
設定可能なパラメーター
only_on_same_position
- (オプション、ブール値)
true
の場合、同じ位置の重複トークンのみを削除します。デフォルトはfalse
です。
カスタマイズ
たとえば、次のリクエストは`````unique`````フィルターを`````only_on_same_position`````を`````true`````に設定して作成します。
#### Python
``````python
resp = client.indices.create(
index="letter_unique_pos_example",
settings={
"analysis": {
"analyzer": {
"letter_unique_pos": {
"tokenizer": "letter",
"filter": [
"unique_pos"
]
}
},
"filter": {
"unique_pos": {
"type": "unique",
"only_on_same_position": True
}
}
}
},
)
print(resp)
`
Ruby
response = client.indices.create(
index: 'letter_unique_pos_example',
body: {
settings: {
analysis: {
analyzer: {
letter_unique_pos: {
tokenizer: 'letter',
filter: [
'unique_pos'
]
}
},
filter: {
unique_pos: {
type: 'unique',
only_on_same_position: true
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "letter_unique_pos_example",
settings: {
analysis: {
analyzer: {
letter_unique_pos: {
tokenizer: "letter",
filter: ["unique_pos"],
},
},
filter: {
unique_pos: {
type: "unique",
only_on_same_position: true,
},
},
},
},
});
console.log(response);
コンソール
PUT letter_unique_pos_example
{
"settings": {
"analysis": {
"analyzer": {
"letter_unique_pos": {
"tokenizer": "letter",
"filter": [ "unique_pos" ]
}
},
"filter": {
"unique_pos": {
"type": "unique",
"only_on_same_position": true
}
}
}
}
}