ストップトークンフィルター

トークンストリームからストップワードを削除します。

カスタマイズされていない場合、フィルターはデフォルトで以下の英語のストップワードを削除します:

a, an, and, are, as, at, be, but, by, for, if, in, into, is, it, no, not, of, on, or, such, that, the, their, then, there, these, they, this, to, was, will, with

英語に加えて、stopフィルターはいくつかの言語のための事前定義されたストップワードリストをサポートしています。独自のストップワードを配列またはファイルとして指定することもできます。

  1. ## 例
  2. 以下の分析APIリクエストは、`````stop`````フィルターを使用して`````a``````````the`````のストップワードを`````a quick fox jumps over the lazy dog`````から削除します:
  3. #### Python
  4. ``````python
  5. resp = client.indices.analyze(
  6. tokenizer="standard",
  7. filter=[
  8. "stop"
  9. ],
  10. text="a quick fox jumps over the lazy dog",
  11. )
  12. print(resp)
  13. `

Ruby

  1. response = client.indices.analyze(
  2. body: {
  3. tokenizer: 'standard',
  4. filter: [
  5. 'stop'
  6. ],
  7. text: 'a quick fox jumps over the lazy dog'
  8. }
  9. )
  10. puts response

Js

  1. const response = await client.indices.analyze({
  2. tokenizer: "standard",
  3. filter: ["stop"],
  4. text: "a quick fox jumps over the lazy dog",
  5. });
  6. console.log(response);

コンソール

  1. GET /_analyze
  2. {
  3. "tokenizer": "standard",
  4. "filter": [ "stop" ],
  5. "text": "a quick fox jumps over the lazy dog"
  6. }

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

テキスト

  1. [ quick, fox, jumps, over, lazy, dog ]

アナライザーに追加

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

Python

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

Ruby

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

Js

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

コンソール

  1. PUT /my-index-000001
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "my_analyzer": {
  7. "tokenizer": "whitespace",
  8. "filter": [ "stop" ]
  9. }
  10. }
  11. }
  12. }
  13. }

設定可能なパラメータ

  • stopwords
  • (オプション、文字列または文字列の配列) 言語の値、例えば_arabic_または_thai_。デフォルトは_english_
    各言語の値はLuceneの事前定義されたストップワードリストに対応しています。言語別のストップワードを参照して、サポートされている言語の値とそのストップワードを確認してください。
    ストップワードの配列も受け付けます。
    ストップワードの空のリストには_none_を使用します。
  • stopwords_path
  • (オプション、文字列) 削除するストップワードのリストを含むファイルへのパス。
    このパスは絶対パスまたはconfigの場所に対する相対パスでなければならず、ファイルはUTF-8エンコードされている必要があります。ファイル内の各ストップワードは改行で区切られている必要があります。
  • ignore_case
  • (オプション、ブール値) trueの場合、ストップワードの一致は大文字と小文字を区別しません。例えば、trueの場合、theのストップワードはTheTHE、またはtheを一致させて削除します。デフォルトはfalseです。
  • remove_trailing
  • (オプション、ブール値) trueの場合、ストリームの最後のトークンがストップワードであれば削除されます。デフォルトはtrueです。
    このパラメータは、補完サジェスターとフィルターを使用する場合はfalseであるべきです。これにより、green aのようなクエリがgreen appleを一致させて提案し、他のストップワードを削除することができます。

カスタマイズ

  1. 例えば、以下のリクエストは、[`````_english_`````](352e9dddd26f5c96.md#english-stop-words)ストップワードリストからストップワードを削除するカスタムの大文字小文字を区別しない`````stop`````フィルターを作成します:
  2. #### Python
  3. ``````python
  4. resp = client.indices.create(
  5. index="my-index-000001",
  6. settings={
  7. "analysis": {
  8. "analyzer": {
  9. "default": {
  10. "tokenizer": "whitespace",
  11. "filter": [
  12. "my_custom_stop_words_filter"
  13. ]
  14. }
  15. },
  16. "filter": {
  17. "my_custom_stop_words_filter": {
  18. "type": "stop",
  19. "ignore_case": True
  20. }
  21. }
  22. }
  23. },
  24. )
  25. print(resp)
  26. `

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. default: {
  8. tokenizer: 'whitespace',
  9. filter: [
  10. 'my_custom_stop_words_filter'
  11. ]
  12. }
  13. },
  14. filter: {
  15. my_custom_stop_words_filter: {
  16. type: 'stop',
  17. ignore_case: true
  18. }
  19. }
  20. }
  21. }
  22. }
  23. )
  24. puts response

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. default: {
  7. tokenizer: "whitespace",
  8. filter: ["my_custom_stop_words_filter"],
  9. },
  10. },
  11. filter: {
  12. my_custom_stop_words_filter: {
  13. type: "stop",
  14. ignore_case: true,
  15. },
  16. },
  17. },
  18. },
  19. });
  20. console.log(response);

コンソール

  1. PUT /my-index-000001
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "default": {
  7. "tokenizer": "whitespace",
  8. "filter": [ "my_custom_stop_words_filter" ]
  9. }
  10. },
  11. "filter": {
  12. "my_custom_stop_words_filter": {
  13. "type": "stop",
  14. "ignore_case": true
  15. }
  16. }
  17. }
  18. }
  19. }

独自のストップワードリストを指定することもできます。例えば、以下のリクエストは、andis、およびtheのストップワードのみを削除するカスタムの大文字小文字を区別しないstopフィルターを作成します:

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. settings={
  4. "analysis": {
  5. "analyzer": {
  6. "default": {
  7. "tokenizer": "whitespace",
  8. "filter": [
  9. "my_custom_stop_words_filter"
  10. ]
  11. }
  12. },
  13. "filter": {
  14. "my_custom_stop_words_filter": {
  15. "type": "stop",
  16. "ignore_case": True,
  17. "stopwords": [
  18. "and",
  19. "is",
  20. "the"
  21. ]
  22. }
  23. }
  24. }
  25. },
  26. )
  27. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. default: {
  8. tokenizer: 'whitespace',
  9. filter: [
  10. 'my_custom_stop_words_filter'
  11. ]
  12. }
  13. },
  14. filter: {
  15. my_custom_stop_words_filter: {
  16. type: 'stop',
  17. ignore_case: true,
  18. stopwords: [
  19. 'and',
  20. 'is',
  21. 'the'
  22. ]
  23. }
  24. }
  25. }
  26. }
  27. }
  28. )
  29. puts response

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. default: {
  7. tokenizer: "whitespace",
  8. filter: ["my_custom_stop_words_filter"],
  9. },
  10. },
  11. filter: {
  12. my_custom_stop_words_filter: {
  13. type: "stop",
  14. ignore_case: true,
  15. stopwords: ["and", "is", "the"],
  16. },
  17. },
  18. },
  19. },
  20. });
  21. console.log(response);

コンソール

  1. PUT /my-index-000001
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "default": {
  7. "tokenizer": "whitespace",
  8. "filter": [ "my_custom_stop_words_filter" ]
  9. }
  10. },
  11. "filter": {
  12. "my_custom_stop_words_filter": {
  13. "type": "stop",
  14. "ignore_case": true,
  15. "stopwords": [ "and", "is", "the" ]
  16. }
  17. }
  18. }
  19. }
  20. }

言語別のストップワード

以下のリストは、stopwordsパラメータに対するサポートされている言語の値と、それらの事前定義されたストップワードへのリンクを含んでいます。