トークン数制限フィルター

出力トークンの数を制限します。limitフィルターは、トークン数に基づいてドキュメントフィールド値のサイズを制限するために一般的に使用されます。

デフォルトでは、limitフィルターはストリーム内の最初のトークンのみを保持します。たとえば、フィルターはトークンストリーム[ one, two, three ][ one ]に変更できます。

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

  1. If you want to limit the size of field values based on
  2. _character length_, use the <<ignore-above,`ignore_above`>> mapping parameter.

設定可能なパラメータ

  • max_token_count
  • (オプション、整数)保持する最大トークン数。この制限に達すると、残りのトークンは出力から除外されます。デフォルトは1です。
  • consume_all_tokens
  • (オプション、ブール値)trueの場合、limitフィルターはトークンストリームを使い果たします。max_token_countにすでに達していてもです。デフォルトはfalseです。

次のanalyze APIリクエストは、limitフィルターを使用してquick fox jumps over lazy dog内の最初の2つのトークンのみを保持します:

Python

  1. resp = client.indices.analyze(
  2. tokenizer="standard",
  3. filter=[
  4. {
  5. "type": "limit",
  6. "max_token_count": 2
  7. }
  8. ],
  9. text="quick fox jumps over lazy dog",
  10. )
  11. print(resp)

Ruby

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

Js

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

コンソール

  1. GET _analyze
  2. {
  3. "tokenizer": "standard",
  4. "filter": [
  5. {
  6. "type": "limit",
  7. "max_token_count": 2
  8. }
  9. ],
  10. "text": "quick fox jumps over lazy dog"
  11. }

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

テキスト

  1. [ quick, fox ]

アナライザーに追加

次のcreate index APIリクエストは、limitフィルターを使用して新しいカスタムアナライザーを構成します。

Python

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

Ruby

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

Js

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

コンソール

  1. PUT limit_example
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "standard_one_token_limit": {
  7. "tokenizer": "standard",
  8. "filter": [ "limit" ]
  9. }
  10. }
  11. }
  12. }
  13. }

カスタマイズ

  1. たとえば、次のリクエストは、ストリームの最初の5つのトークンのみを保持するカスタム`````limit`````フィルターを作成します:
  2. #### Python
  3. ``````python
  4. resp = client.indices.create(
  5. index="custom_limit_example",
  6. settings={
  7. "analysis": {
  8. "analyzer": {
  9. "whitespace_five_token_limit": {
  10. "tokenizer": "whitespace",
  11. "filter": [
  12. "five_token_limit"
  13. ]
  14. }
  15. },
  16. "filter": {
  17. "five_token_limit": {
  18. "type": "limit",
  19. "max_token_count": 5
  20. }
  21. }
  22. }
  23. },
  24. )
  25. print(resp)
  26. `

Ruby

  1. response = client.indices.create(
  2. index: 'custom_limit_example',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. whitespace_five_token_limit: {
  8. tokenizer: 'whitespace',
  9. filter: [
  10. 'five_token_limit'
  11. ]
  12. }
  13. },
  14. filter: {
  15. five_token_limit: {
  16. type: 'limit',
  17. max_token_count: 5
  18. }
  19. }
  20. }
  21. }
  22. }
  23. )
  24. puts response

Js

  1. const response = await client.indices.create({
  2. index: "custom_limit_example",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. whitespace_five_token_limit: {
  7. tokenizer: "whitespace",
  8. filter: ["five_token_limit"],
  9. },
  10. },
  11. filter: {
  12. five_token_limit: {
  13. type: "limit",
  14. max_token_count: 5,
  15. },
  16. },
  17. },
  18. },
  19. });
  20. console.log(response);

コンソール

  1. PUT custom_limit_example
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "whitespace_five_token_limit": {
  7. "tokenizer": "whitespace",
  8. "filter": [ "five_token_limit" ]
  9. }
  10. },
  11. "filter": {
  12. "five_token_limit": {
  13. "type": "limit",
  14. "max_token_count": 5
  15. }
  16. }
  17. }
  18. }
  19. }