エリジョントークンフィルター

トークンの先頭から指定されたエリジョンを削除します。たとえば、このフィルターを使用してl'avionavionに変更できます。

カスタマイズされていない場合、フィルターはデフォルトで以下のフランス語のエリジョンを削除します:

  1. このフィルターのカスタマイズ版は、Elasticsearchのいくつかの組み込み[言語アナライザー](/read/elasticsearch-8-15/1246d31d00e0dc57.md)に含まれています:
  2. - [カタロニア語アナライザー](1246d31d00e0dc57.md#catalan-analyzer)
  3. - [フランス語アナライザー](1246d31d00e0dc57.md#french-analyzer)
  4. - [アイルランド語アナライザー](1246d31d00e0dc57.md#irish-analyzer)
  5. - [イタリア語アナライザー](1246d31d00e0dc57.md#italian-analyzer)
  6. このフィルターはLuceneの[ElisionFilter](https://lucene.apache.org/core/9_11_1/analysis/common/org/apache/lucene/analysis/util/ElisionFilter.html)を使用します。
  7. ## 例
  8. 以下の[分析API](/read/elasticsearch-8-15/1a51b9d359d8a54c.md)リクエストは、`````elision`````フィルターを使用して`````j'``````````j’examine près du wharf`````から削除します:
  9. #### Python
  10. ``````python
  11. resp = client.indices.analyze(
  12. tokenizer="standard",
  13. filter=[
  14. "elision"
  15. ],
  16. text="j’examine près du wharf",
  17. )
  18. print(resp)
  19. `

Ruby

  1. response = client.indices.analyze(
  2. body: {
  3. tokenizer: 'standard',
  4. filter: [
  5. 'elision'
  6. ],
  7. text: 'j’examine près du wharf'
  8. }
  9. )
  10. puts response

Js

  1. const response = await client.indices.analyze({
  2. tokenizer: "standard",
  3. filter: ["elision"],
  4. text: "j’examine près du wharf",
  5. });
  6. console.log(response);

コンソール

  1. GET _analyze
  2. {
  3. "tokenizer" : "standard",
  4. "filter" : ["elision"],
  5. "text" : "j’examine près du wharf"
  6. }

フィルターは以下のトークンを生成します:

テキスト

  1. [ examine, près, du, wharf ]

アナライザーに追加

以下のインデックス作成APIリクエストは、elisionフィルターを使用して新しいカスタムアナライザーを構成します。

Python

  1. resp = client.indices.create(
  2. index="elision_example",
  3. settings={
  4. "analysis": {
  5. "analyzer": {
  6. "whitespace_elision": {
  7. "tokenizer": "whitespace",
  8. "filter": [
  9. "elision"
  10. ]
  11. }
  12. }
  13. }
  14. },
  15. )
  16. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'elision_example',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. whitespace_elision: {
  8. tokenizer: 'whitespace',
  9. filter: [
  10. 'elision'
  11. ]
  12. }
  13. }
  14. }
  15. }
  16. }
  17. )
  18. puts response

Js

  1. const response = await client.indices.create({
  2. index: "elision_example",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. whitespace_elision: {
  7. tokenizer: "whitespace",
  8. filter: ["elision"],
  9. },
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);

コンソール

  1. PUT /elision_example
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "whitespace_elision": {
  7. "tokenizer": "whitespace",
  8. "filter": [ "elision" ]
  9. }
  10. }
  11. }
  12. }
  13. }

設定可能なパラメーター

  • articles
  • (必須*, 文字列の配列) 削除するエリジョンのリスト。
    削除されるには、エリジョンはトークンの先頭にあり、すぐにアポストロフィが続く必要があります。エリジョンとアポストロフィの両方が削除されます。
    カスタムelisionフィルターの場合、このパラメーターまたはarticles_pathのいずれかを指定する必要があります。
  • articles_path
  • (必須*, 文字列) 削除するエリジョンのリストを含むファイルへのパス。
    このパスは絶対パスまたはconfigの場所に対する相対パスでなければならず、ファイルはUTF-8エンコードされている必要があります。ファイル内の各エリジョンは改行で区切られている必要があります。
    削除されるには、エリジョンはトークンの先頭にあり、すぐにアポストロフィが続く必要があります。エリジョンとアポストロフィの両方が削除されます。
    カスタムelisionフィルターの場合、このパラメーターまたはarticlesのいずれかを指定する必要があります。
  • articles_case
  • (オプション、ブール値) trueの場合、エリジョンの一致は大文字と小文字を区別しません。falseの場合、エリジョンの一致は大文字と小文字を区別します。デフォルトはfalseです。

カスタマイズ

  1. たとえば、以下のリクエストは、`````l'``````````m'``````````t'``````````qu'``````````n'``````````s'`````、および`````j'`````エリジョンを削除するカスタムの大文字と小文字を区別しない`````elision`````フィルターを作成します:
  2. #### Python
  3. ``````python
  4. resp = client.indices.create(
  5. index="elision_case_insensitive_example",
  6. settings={
  7. "analysis": {
  8. "analyzer": {
  9. "default": {
  10. "tokenizer": "whitespace",
  11. "filter": [
  12. "elision_case_insensitive"
  13. ]
  14. }
  15. },
  16. "filter": {
  17. "elision_case_insensitive": {
  18. "type": "elision",
  19. "articles": [
  20. "l",
  21. "m",
  22. "t",
  23. "qu",
  24. "n",
  25. "s",
  26. "j"
  27. ],
  28. "articles_case": True
  29. }
  30. }
  31. }
  32. },
  33. )
  34. print(resp)
  35. `

Ruby

  1. response = client.indices.create(
  2. index: 'elision_case_insensitive_example',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. default: {
  8. tokenizer: 'whitespace',
  9. filter: [
  10. 'elision_case_insensitive'
  11. ]
  12. }
  13. },
  14. filter: {
  15. elision_case_insensitive: {
  16. type: 'elision',
  17. articles: [
  18. 'l',
  19. 'm',
  20. 't',
  21. 'qu',
  22. 'n',
  23. 's',
  24. 'j'
  25. ],
  26. articles_case: true
  27. }
  28. }
  29. }
  30. }
  31. }
  32. )
  33. puts response

Js

  1. const response = await client.indices.create({
  2. index: "elision_case_insensitive_example",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. default: {
  7. tokenizer: "whitespace",
  8. filter: ["elision_case_insensitive"],
  9. },
  10. },
  11. filter: {
  12. elision_case_insensitive: {
  13. type: "elision",
  14. articles: ["l", "m", "t", "qu", "n", "s", "j"],
  15. articles_case: true,
  16. },
  17. },
  18. },
  19. },
  20. });
  21. console.log(response);

コンソール

  1. PUT /elision_case_insensitive_example
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "default": {
  7. "tokenizer": "whitespace",
  8. "filter": [ "elision_case_insensitive" ]
  9. }
  10. },
  11. "filter": {
  12. "elision_case_insensitive": {
  13. "type": "elision",
  14. "articles": [ "l", "m", "t", "qu", "n", "s", "j" ],
  15. "articles_case": true
  16. }
  17. }
  18. }
  19. }
  20. }