キーワードトークンフィルター

指定された単語リストに含まれるトークンのみを保持します。

このフィルターはLuceneのKeepWordFilterを使用します。

トークンストリームから単語のリストを削除するには、stopフィルターを使用します。

以下のanalyze APIリクエストは、keepフィルターを使用して、foxおよびdogトークンのみをthe quick fox jumps over the lazy dogから保持します。

Python

  1. resp = client.indices.analyze(
  2. tokenizer="whitespace",
  3. filter=[
  4. {
  5. "type": "keep",
  6. "keep_words": [
  7. "dog",
  8. "elephant",
  9. "fox"
  10. ]
  11. }
  12. ],
  13. text="the quick fox jumps over the lazy dog",
  14. )
  15. print(resp)

Ruby

  1. response = client.indices.analyze(
  2. body: {
  3. tokenizer: 'whitespace',
  4. filter: [
  5. {
  6. type: 'keep',
  7. keep_words: [
  8. 'dog',
  9. 'elephant',
  10. 'fox'
  11. ]
  12. }
  13. ],
  14. text: 'the quick fox jumps over the lazy dog'
  15. }
  16. )
  17. puts response

Js

  1. const response = await client.indices.analyze({
  2. tokenizer: "whitespace",
  3. filter: [
  4. {
  5. type: "keep",
  6. keep_words: ["dog", "elephant", "fox"],
  7. },
  8. ],
  9. text: "the quick fox jumps over the lazy dog",
  10. });
  11. console.log(response);

コンソール

  1. GET _analyze
  2. {
  3. "tokenizer": "whitespace",
  4. "filter": [
  5. {
  6. "type": "keep",
  7. "keep_words": [ "dog", "elephant", "fox" ]
  8. }
  9. ],
  10. "text": "the quick fox jumps over the lazy dog"
  11. }

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

テキスト

  1. [ fox, dog ]

設定可能なパラメータ

  • keep_words
  • (必須*, 文字列の配列) 保持する単語のリスト。このリスト内の単語と一致するトークンのみが出力に含まれます。
    このパラメータまたはkeep_words_pathのいずれかを指定する必要があります。
  • keep_words_path
  • (必須*, 文字列の配列) 保持する単語のリストを含むファイルへのパス。このリスト内の単語と一致するトークンのみが出力に含まれます。
    このパスは絶対パスまたはconfigの場所に対する相対パスでなければならず、ファイルはUTF-8エンコードされている必要があります。ファイル内の各単語は改行で区切られている必要があります。
    このパラメータまたはkeep_wordsのいずれかを指定する必要があります。
  • keep_words_case
  • (オプション, ブール値) trueの場合、すべての保持単語を小文字にします。デフォルトはfalseです。

アナライザーのカスタマイズと追加

  1. たとえば、以下の[create index API](/read/elasticsearch-8-15/b5c127aabf881d48.md)リクエストは、カスタム`````keep`````フィルターを使用して2つの新しい[カスタムアナライザー](/read/elasticsearch-8-15/f8c7123dddb484d0.md)を構成します:
  2. - `````standard_keep_word_array`````、これはインライン配列の保持単語を持つカスタム`````keep`````フィルターを使用します
  3. - `````standard_keep_word_file`````、これは保持単語ファイルを持つカスタム`````keep`````フィルターを使用します
  4. #### Python
  5. ``````python
  6. resp = client.indices.create(
  7. index="keep_words_example",
  8. settings={
  9. "analysis": {
  10. "analyzer": {
  11. "standard_keep_word_array": {
  12. "tokenizer": "standard",
  13. "filter": [
  14. "keep_word_array"
  15. ]
  16. },
  17. "standard_keep_word_file": {
  18. "tokenizer": "standard",
  19. "filter": [
  20. "keep_word_file"
  21. ]
  22. }
  23. },
  24. "filter": {
  25. "keep_word_array": {
  26. "type": "keep",
  27. "keep_words": [
  28. "one",
  29. "two",
  30. "three"
  31. ]
  32. },
  33. "keep_word_file": {
  34. "type": "keep",
  35. "keep_words_path": "analysis/example_word_list.txt"
  36. }
  37. }
  38. }
  39. },
  40. )
  41. print(resp)
  42. `

Js

  1. const response = await client.indices.create({
  2. index: "keep_words_example",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. standard_keep_word_array: {
  7. tokenizer: "standard",
  8. filter: ["keep_word_array"],
  9. },
  10. standard_keep_word_file: {
  11. tokenizer: "standard",
  12. filter: ["keep_word_file"],
  13. },
  14. },
  15. filter: {
  16. keep_word_array: {
  17. type: "keep",
  18. keep_words: ["one", "two", "three"],
  19. },
  20. keep_word_file: {
  21. type: "keep",
  22. keep_words_path: "analysis/example_word_list.txt",
  23. },
  24. },
  25. },
  26. },
  27. });
  28. console.log(response);

コンソール

  1. PUT keep_words_example
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "standard_keep_word_array": {
  7. "tokenizer": "standard",
  8. "filter": [ "keep_word_array" ]
  9. },
  10. "standard_keep_word_file": {
  11. "tokenizer": "standard",
  12. "filter": [ "keep_word_file" ]
  13. }
  14. },
  15. "filter": {
  16. "keep_word_array": {
  17. "type": "keep",
  18. "keep_words": [ "one", "two", "three" ]
  19. },
  20. "keep_word_file": {
  21. "type": "keep",
  22. "keep_words_path": "analysis/example_word_list.txt"
  23. }
  24. }
  25. }
  26. }
  27. }