エリジョントークンフィルター
トークンの先頭から指定されたエリジョンを削除します。たとえば、このフィルターを使用してl'avion
をavion
に変更できます。
カスタマイズされていない場合、フィルターはデフォルトで以下のフランス語のエリジョンを削除します:
このフィルターのカスタマイズ版は、Elasticsearchのいくつかの組み込み[言語アナライザー](/read/elasticsearch-8-15/1246d31d00e0dc57.md)に含まれています:
- [カタロニア語アナライザー](1246d31d00e0dc57.md#catalan-analyzer)
- [フランス語アナライザー](1246d31d00e0dc57.md#french-analyzer)
- [アイルランド語アナライザー](1246d31d00e0dc57.md#irish-analyzer)
- [イタリア語アナライザー](1246d31d00e0dc57.md#italian-analyzer)
このフィルターはLuceneの[ElisionFilter](https://lucene.apache.org/core/9_11_1/analysis/common/org/apache/lucene/analysis/util/ElisionFilter.html)を使用します。
## 例
以下の[分析API](/read/elasticsearch-8-15/1a51b9d359d8a54c.md)リクエストは、`````elision`````フィルターを使用して`````j'`````を`````j’examine près du wharf`````から削除します:
#### Python
``````python
resp = client.indices.analyze(
tokenizer="standard",
filter=[
"elision"
],
text="j’examine près du wharf",
)
print(resp)
`
Ruby
response = client.indices.analyze(
body: {
tokenizer: 'standard',
filter: [
'elision'
],
text: 'j’examine près du wharf'
}
)
puts response
Js
const response = await client.indices.analyze({
tokenizer: "standard",
filter: ["elision"],
text: "j’examine près du wharf",
});
console.log(response);
コンソール
GET _analyze
{
"tokenizer" : "standard",
"filter" : ["elision"],
"text" : "j’examine près du wharf"
}
フィルターは以下のトークンを生成します:
テキスト
[ examine, près, du, wharf ]
アナライザーに追加
以下のインデックス作成APIリクエストは、elision
フィルターを使用して新しいカスタムアナライザーを構成します。
Python
resp = client.indices.create(
index="elision_example",
settings={
"analysis": {
"analyzer": {
"whitespace_elision": {
"tokenizer": "whitespace",
"filter": [
"elision"
]
}
}
}
},
)
print(resp)
Ruby
response = client.indices.create(
index: 'elision_example',
body: {
settings: {
analysis: {
analyzer: {
whitespace_elision: {
tokenizer: 'whitespace',
filter: [
'elision'
]
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "elision_example",
settings: {
analysis: {
analyzer: {
whitespace_elision: {
tokenizer: "whitespace",
filter: ["elision"],
},
},
},
},
});
console.log(response);
コンソール
PUT /elision_example
{
"settings": {
"analysis": {
"analyzer": {
"whitespace_elision": {
"tokenizer": "whitespace",
"filter": [ "elision" ]
}
}
}
}
}
設定可能なパラメーター
articles
- (必須*, 文字列の配列) 削除するエリジョンのリスト。
削除されるには、エリジョンはトークンの先頭にあり、すぐにアポストロフィが続く必要があります。エリジョンとアポストロフィの両方が削除されます。
カスタムelision
フィルターの場合、このパラメーターまたはarticles_path
のいずれかを指定する必要があります。 articles_path
- (必須*, 文字列) 削除するエリジョンのリストを含むファイルへのパス。
このパスは絶対パスまたはconfig
の場所に対する相対パスでなければならず、ファイルはUTF-8エンコードされている必要があります。ファイル内の各エリジョンは改行で区切られている必要があります。
削除されるには、エリジョンはトークンの先頭にあり、すぐにアポストロフィが続く必要があります。エリジョンとアポストロフィの両方が削除されます。
カスタムelision
フィルターの場合、このパラメーターまたはarticles
のいずれかを指定する必要があります。 articles_case
- (オプション、ブール値)
true
の場合、エリジョンの一致は大文字と小文字を区別しません。false
の場合、エリジョンの一致は大文字と小文字を区別します。デフォルトはfalse
です。
カスタマイズ
たとえば、以下のリクエストは、`````l'`````、`````m'`````、`````t'`````、`````qu'`````、`````n'`````、`````s'`````、および`````j'`````エリジョンを削除するカスタムの大文字と小文字を区別しない`````elision`````フィルターを作成します:
#### Python
``````python
resp = client.indices.create(
index="elision_case_insensitive_example",
settings={
"analysis": {
"analyzer": {
"default": {
"tokenizer": "whitespace",
"filter": [
"elision_case_insensitive"
]
}
},
"filter": {
"elision_case_insensitive": {
"type": "elision",
"articles": [
"l",
"m",
"t",
"qu",
"n",
"s",
"j"
],
"articles_case": True
}
}
}
},
)
print(resp)
`
Ruby
response = client.indices.create(
index: 'elision_case_insensitive_example',
body: {
settings: {
analysis: {
analyzer: {
default: {
tokenizer: 'whitespace',
filter: [
'elision_case_insensitive'
]
}
},
filter: {
elision_case_insensitive: {
type: 'elision',
articles: [
'l',
'm',
't',
'qu',
'n',
's',
'j'
],
articles_case: true
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "elision_case_insensitive_example",
settings: {
analysis: {
analyzer: {
default: {
tokenizer: "whitespace",
filter: ["elision_case_insensitive"],
},
},
filter: {
elision_case_insensitive: {
type: "elision",
articles: ["l", "m", "t", "qu", "n", "s", "j"],
articles_case: true,
},
},
},
},
});
console.log(response);
コンソール
PUT /elision_case_insensitive_example
{
"settings": {
"analysis": {
"analyzer": {
"default": {
"tokenizer": "whitespace",
"filter": [ "elision_case_insensitive" ]
}
},
"filter": {
"elision_case_insensitive": {
"type": "elision",
"articles": [ "l", "m", "t", "qu", "n", "s", "j" ],
"articles_case": true
}
}
}
}
}