본문 바로가기
WIKI 기술 지식 베이스

Did-you-mean

원문 보기 위키 갱신

출처: 문서

본문

Did-you-mean

Did-you-mean 제안기는 철자가 틀린 검색어에 대한 수정 제안을 보여줘요.

예를 들어, 사용자가 fliud를 입력하면 OpenSearch는 fluid와 같은 수정된 검색어를 제안해요. 그런 다음 수정된 용어를 사용자에게 제안하거나 검색어를 자동으로 수정할 수도 있어요.

다음 방법 중 하나를 사용하여 did-you-mean 제안기를 구현할 수 있어요:

Term suggester

용어 제안기를 사용하여 개별 단어의 맞춤법 수정을 제안해요. 용어 제안기는 편집 거리를 사용하여 제안을 계산해요.

편집 거리는 한 용어가 다른 용어와 일치하기 위해 수행해야 하는 단일 문자 삽입, 삭제 또는 대체의 수예요. 예를 들어, "cat"을 "hats"로 변경하려면 "c"를 "h"로 대체하고 "s"를 삽입해야 하므로 이 경우 편집 거리는 2예요.

용어 제안기를 사용하기 위해 인덱스에 특별한 필드 매핑이 필요하지 않아요. 기본적으로 문자열 필드 유형은 text로 매핑돼요. text 필드는 분석되므로 다음 예제의 title은 개별 단어로 토큰화돼요. 다음 문서를 인덱싱하면 title이 text 필드인 books 인덱스가 생성돼요:

PUT books/_doc/1
{
  "title": "Design Patterns (Object-Oriented Software)"
}

PUT books/_doc/2
{
  "title": "Software Architecture Patterns Explained"
}

문자열이 토큰으로 어떻게 분할되는지 확인하려면 _analyze 엔드포인트를 사용할 수 있어요. 필드가 사용하는 것과 동일한 분석기를 적용하려면 field 매개변수에 필드 이름을 지정할 수 있어요:

GET books/_analyze
{
  "text": "Design Patterns (Object-Oriented Software)",
  "field": "title"
}

기본 분석기(standard)는 문자열을 단어 경계에서 분할하고, 구두점을 제거하며, 토큰을 소문자로 변환해요:

{
  "tokens" : [
    {
      "token" : "design",
      "start_offset" : 0,
      "end_offset" : 6,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "patterns",
      "start_offset" : 7,
      "end_offset" : 15,
      "type" : "<ALPHANUM>",
      "position" : 1
    },
    {
      "token" : "object",
      "start_offset" : 17,
      "end_offset" : 23,
      "type" : "<ALPHANUM>",
      "position" : 2
    },
    {
      "token" : "oriented",
      "start_offset" : 24,
      "end_offset" : 32,
      "type" : "<ALPHANUM>",
      "position" : 3
    },
    {
      "token" : "software",
      "start_offset" : 33,
      "end_offset" : 41,
      "type" : "<ALPHANUM>",
      "position" : 4
    }
  ]
}

철자가 틀린 검색어에 대한 제안을 받으려면 용어 제안기를 사용해요. 제안이 필요한 입력 텍스트를 text 필드에 지정하고, 제안을 가져올 필드를 field 필드에 지정해요:

GET books/_search
{
  "suggest": {
    "spell-check": {
      "text": "patern",
      "term": {
        "field": "title"
      }
    }
  }
}

용어 제안기는 options 배열에 입력 텍스트에 대한 수정 목록을 반환해요:

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 0,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "suggest" : {
    "spell-check" : [
      {
        "text" : "patern",
        "offset" : 0,
        "length" : 6,
        "options" : [
          {
            "text" : "patterns",
            "score" : 0.6666666,
            "freq" : 2
          }
        ]
      }
    ]
  }
}

score 값은 편집 거리를 기반으로 계산돼요. 점수가 높을수록 더 좋은 제안이에요. freq는 지정된 인덱스의 문서에서 용어가 나타나는 횟수를 나타내는 빈도예요.

하나의 요청에 여러 제안을 포함할 수 있어요. 다음 예제는 두 가지 다른 제안에 대해 용어 제안기를 사용해요:

GET books/_search
{
  "suggest": {
    "spell-check1" : {
      "text" : "patern",
      "term" : {
        "field" : "title"
      }
    },
    "spell-check2" : {
      "text" : "desing",
      "term" : {
        "field" : "title"
      }
    }
  }
}

동일한 입력 텍스트에 대해 여러 필드에서 제안을 받으려면 텍스트를 전역적으로 정의하여 중복을 피할 수 있어요:

GET books/_search
{
  "suggest": {
    "text" : "patern",
    "spell-check1" : {
      "term" : {
        "field" : "title"
      }
    },
    "spell-check2" : {
      "term" : {
        "field" : "subject"
      }
    }
  }
}

text가 전역 및 개별 제안 수준 모두에서 지정된 경우 제안 수준 값이 전역 값을 재정의해요.

Term suggester options

용어 제안기에 다음 옵션을 지정할 수 있어요.

옵션 설명
field 제안을 가져올 필드예요. 필수 항목이에요. 각 제안별로 또는 전역적으로 설정할 수 있어요.
analyzer 입력 텍스트를 분석하는 데 사용할 분석기예요. 기본값은 field에 구성된 분석기예요.
size 입력 텍스트의 각 토큰에 대해 반환할 최대 제안 수예요.
sort 응답에서 제안이 정렬되는 방식을 지정해요. 유효한 값은 다음과 같아요:
- score: 유사도 점수, 문서 빈도, 용어 자체 순으로 정렬해요.
- frequency: 문서 빈도, 유사도 점수, 용어 자체 순으로 정렬해요.
suggest_mode 제안 모드는 응답에 포함되어야 하는 제안의 용어를 지정해요. 유효한 값은 다음과 같아요:
- missing: 인덱스의 지정된 필드에 발생 횟수가 0인 입력 용어에 대해서만 제안을 반환해요. 이 검사는 필드별로 이루어져요. 용어가 대상 필드가 아닌 다른 필드에 나타나더라도 여전히 누락된 것으로 간주돼요. 이 모드는 전체 인덱스의 용어 빈도를 고려하지 않고 지정된 필드만 고려한다는 점에 유의하세요.
- popular: 원래 입력 텍스트보다 문서에서 더 자주 발생하는 경우에만 제안을 반환해요.
- always: 입력 텍스트의 각 용어에 대해 항상 제안을 반환해요.
기본값은 missing이에요.
max_edits 제안의 최대 편집 거리예요. 유효한 값은 [1, 2] 범위예요. 기본값은 2예요.
prefix_length 제안 반환을 시작하기 위해 일치하는 접두사의 최소 길이를 지정하는 정수예요. prefix_length의 접두사가 일치하지 않지만 검색어가 여전히 편집 거리 내에 있으면 제안이 반환되지 않아요. 기본값은 1이에요. 값이 높을수록 맞춤법 검사 성능이 향상되는데, 철자 오류는 단어의 시작 부분에서 발생하는 경향이 없기 때문이에요.
min_word_length 제안이 응답에 포함되기 위해 필요한 최소 길이예요. 기본값은 4예요.
shard_size 각 샤드에서 얻을 후보 제안의 최대 수예요. 모든 후보 제안을 고려한 후 상위 shard_size 제안이 반환돼요. 기본값은 size 값과 같아요. 샤드 수준 문서 빈도는 용어가 다른 샤드에 있을 수 있으므로 정확하지 않을 수 있어요. shard_size가 size보다 크면 제안에 대한 문서 빈도가 더 정확해지지만 성능이 저하될 수 있어요.
max_inspections shard_size의 곱셈 계수예요. OpenSearch가 제안을 찾기 위해 검사하는 최대 후보 제안 수는 shard_size에 max_inspection을 곱하여 계산돼요. 성능 저하를 감수하고 정확도를 향상시킬 수 있어요. 기본값은 5예요.
min_doc_freq 제안이 반환되기 위해 나타나야 하는 최소 문서 수 또는 백분율이에요. 높은 샤드 수준 문서 빈도를 가진 제안만 반환하여 정확도를 향상시킬 수 있어요. 유효한 값은 문서 빈도를 나타내는 정수 또는 문서 백분율을 나타내는 [0, 1] 범위의 부동 소수점이에요. 기본값은 0(기능 비활성화)이에요.
max_term_freq 제안이 반환되기 위해 나타나야 하는 최대 문서 수예요. 유효한 값은 문서 빈도를 나타내는 정수 또는 문서 백분율을 나타내는 [0, 1] 범위의 부동 소수점이에요. 기본값은 0.01이에요. 고빈도 용어는 일반적으로 철자가 정확하기 때문에 제외하면 맞춤법 검사 성능이 향상돼요. 샤드 수준 문서 빈도를 사용해요.
string_distance 유사성을 결정하는 데 사용할 편집 거리 알고리즘이에요. 유효한 값은 다음과 같아요:
- internal: Damerau-Levenshtein 알고리즘을 기반으로 하지만 인덱스의 용어에 대한 편집 거리 비교에 매우 최적화된 기본 알고리즘이에요.
- damerau_levenshtein: Damerau-Levenshtein 알고리즘을 기반으로 한 편집 거리 알고리즘이에요.
- levenshtein: Levenshtein 편집 거리 알고리즘을 기반으로 한 편집 거리 알고리즘이에요.
- jaro_winkler: Jaro-Winkler 알고리즘을 기반으로 한 편집 거리 알고리즘이에요.
- ngram: 문자 n-gram을 기반으로 한 편집 거리 알고리즘이에요.

구문 제안기

did-you-mean을 구현하려면 구문 제안기를 사용하세요. 구문 제안기는 용어 제안기와 유사하지만, 개별 단어 대신 전체 구문을 제안하기 위해 n-gram 언어 모델을 사용한다는 점이 다릅니다.

구문 제안기를 설정하려면 shingle 필터를 사용하고 토큰을 소문자로 변환하는 trigram이라는 사용자 지정 분석기를 만드세요. 이 필터는 edge_ngram 필터와 유사하지만 문자 대신 단어에 적용됩니다. 그런 다음 생성한 사용자 지정 분석기로 제안을 가져올 필드를 구성하세요:

PUT books2
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "trigram": {
            "type": "custom",
            "tokenizer": "standard",
            "filter": [
              "lowercase",
              "shingle"
            ]
          }
        },
        "filter": {
          "shingle": {
            "type": "shingle",
            "min_shingle_size": 2,
            "max_shingle_size": 3
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "fields": {
          "trigram": {
            "type": "text",
            "analyzer": "trigram"
          }
        }
      }
    }
  }
}

문서를 새 인덱스에 색인하세요:

PUT books2/_doc/1
{
  "title": "Design Patterns"
}

PUT books2/_doc/2
{
  "title": "Software Architecture Patterns Explained"
}

사용자가 잘못된 구문을 검색한다고 가정해 보세요:

GET books2/_search
{
  "suggest": {
    "phrase-check": {
      "text": "design paterns",
      "phrase": {
        "field": "title.trigram"
      }
    }
  }
}

구문 제안기가 수정된 구문을 반환합니다:

{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 0,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "suggest" : {
    "phrase-check" : [
      {
        "text" : "design paterns",
        "offset" : 0,
        "length" : 14,
        "options" : [
          {
            "text" : "design patterns",
            "score" : 0.31666178
          }
        ]
      }
    ]
  }
}

제안을 강조 표시하려면 구문 제안기에 대해 highlight 필드를 설정하세요:

GET books2/_search
{
  "suggest": {
    "phrase-check": {
      "text": "design paterns",
      "phrase": {
        "field": "title.trigram",
        "gram_size": 3,
        "highlight": {
          "pre_tag": "<em>",
          "post_tag": "</em>"
        }
      }
    }
  }
}

결과에는 강조 표시된 텍스트가 포함됩니다:

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 0,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "suggest" : {
    "phrase-check" : [
      {
        "text" : "design paterns",
        "offset" : 0,
        "length" : 14,
        "options" : [
          {
            "text" : "design patterns",
            "highlighted" : "design <em>patterns</em>",
            "score" : 0.31666178
          }
        ]
      }
    ]
  }
}

구문 제안기 옵션

구문 제안기에 다음 옵션을 지정할 수 있습니다.

옵션 설명
field n-gram 조회에 사용할 필드입니다. 구문 제안기는 이 필드를 사용하여 제안 점수를 계산합니다. 필수입니다.
gram_size 필드에 있는 n-gram(샤인글)의 최대 크기 n입니다. 필드에 n-gram(샤인글)이 포함되어 있지 않으면 이 옵션을 생략하거나 1로 설정하세요. 필드가 샤인글 필터를 사용하고 gram_size가 설정되지 않은 경우 gram_size는 max_shingle_size로 설정됩니다.
real_word_error_likelihood 용어가 사전에 존재하더라도 철자가 틀릴 확률입니다. 기본값은 0.95입니다(사전에 있는 단어의 5%가 철자가 틀렸습니다).
confidence 신뢰 수준은 입력 구문의 점수에 곱해져 다른 제안에 대한 임계값 점수를 계산하는 부동 소수점 요소입니다. 임계값보다 높은 점수를 가진 제안만 반환됩니다. 신뢰 수준이 1.0이면 입력 구문보다 점수가 높은 제안만 반환됩니다. confidence가 0으로 설정되면 상위 size개의 후보가 반환됩니다. 기본값은 1입니다.
max_errors 제안을 반환하기 위해 오류(철자 오류)가 있을 수 있는 용어의 최대 개수 또는 백분율입니다. 유효한 값은 용어 개수를 나타내는 정수 또는 용어 백분율을 나타내는 (0, 1) 범위의 부동 소수점입니다. 기본값은 0.5이며, 쿼리 용어의 최대 절반까지 철자가 틀린 것으로 처리될 수 있습니다. 이 값을 높게 설정하면 성능이 저하될 수 있습니다. 쿼리 실행 시간 대비 제안 호출 시간을 줄이기 위해 max_errors를 1 또는 2와 같은 낮은 값으로 설정하는 것을 권장합니다.
separator 바이그램 필드에서 용어의 구분자입니다. 기본값은 공백 문자입니다.
size 각 쿼리 용어에 대해 생성할 후보 제안의 수입니다. 더 높은 값을 지정하면 편집 거리가 더 큰 용어가 반환될 수 있습니다. 기본값은 5입니다.
analyzer 제안 텍스트를 분석하는 데 사용할 분석기입니다. 기본값은 field에 대해 구성된 분석기입니다.
shard_size 각 샤드에서 가져올 후보 제안의 최대 수입니다. 모든 후보 제안을 고려한 후 상위 shard_size개의 제안이 반환됩니다. 기본값은 5입니다.
collate 인덱스에 일치하는 문서가 없는 제안을 제거하는 데 사용됩니다.
collate.query 제안을 확인하여 인덱스에 일치하는 문서가 없는 제안을 제거하는 쿼리를 지정합니다.
collate.prune 모든 제안을 반환할지 여부를 지정합니다. prune이 false로 설정되면 일치하는 문서가 있는 제안만 반환됩니다. prune이 true로 설정되면 모든 제안이 반환되며, 각 제안에는 일치하는 문서가 있으면 true, 그렇지 않으면 false인 추가 collate_match 필드가 있습니다. 기본값은 false입니다.
highlight 제안 강조 표시를 구성합니다. pre_tag와 post_tag 값이 모두 필요합니다.
highlight.pre_tag 강조 표시의 시작 태그입니다.
highlight.post_tag 강조 표시의 끝 태그입니다.
smoothing 인덱스에 자주 존재하는 샤인글의 가중치와 드물게 존재하는 샤인글의 가중치를 균형 있게 조정하는 평활화 모델입니다.

Collate 필드

결과를 반환하지 않는 맞춤법 검사 제안을 필터링하려면 collate 필드를 사용할 수 있습니다. 이 필드에는 반환된 각 제안에 대해 실행되는 스크립트 쿼리가 포함됩니다. 템플릿 쿼리 구성에 대한 자세한 내용은 Search templates를 참조하세요. {% raw %}{{suggestion}}{% endraw %} 변수를 사용하여 현재 제안을 지정하거나 params 필드에 자신의 템플릿 매개변수를 전달할 수 있습니다(제안 값은 지정한 변수에 추가됩니다).

제안에 대한 collate 쿼리는 제안이 소싱된 샤드에서만 실행됩니다. 쿼리는 필수입니다.

또한 prune 매개변수가 true로 설정되면 각 제안에 collate_match 필드가 추가됩니다. 쿼리가 결과를 반환하지 않으면 collate_match 값은 false입니다. 그런 다음 collate_match 필드를 기반으로 제안을 필터링할 수 있습니다. prune 매개변수의 기본값은 false입니다.

예를 들어, 다음 쿼리는 collate 필드를 구성하여 현재 제안과 일치하는 title 필드에 대해 match_phrase 쿼리를 실행합니다:

GET books2/_search
{
  "suggest": {
    "phrase-check": {
      "text": "design paterns",
      "phrase": {
        "field": "title.trigram",
        "collate" : {
          "query" : {
            "source": {
              "match_phrase" : {
                "title": "{{suggestion}}"
              }
            }
          },
          "prune": "true"
        }
      }
    }
  }
}

결과 제안에는 collate_match 필드가 true로 설정되어 있으며, 이는 match_phrase 쿼리가 제안에 대해 일치하는 문서를 반환한다는 것을 의미합니다:

{
  "took" : 7,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 0,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "suggest" : {
    "phrase-check" : [
      {
        "text" : "design paterns",
        "offset" : 0,
        "length" : 14,
        "options" : [
          {
            "text" : "design patterns",
            "score" : 0.56759655,
            "collate_match" : true
          }
        ]
      }
    ]
  }
}

평활화 모델

대부분의 사용 사례에서 제안 점수를 계산할 때 샤인글의 빈도뿐만 아니라 샤인글의 크기도 고려해야 합니다. 평활화 모델은 다양한 크기의 샤인글에 대한 점수를 계산하여 빈번한 샤인글과 드문 샤인글의 가중치를 균형 있게 조정하는 데 사용됩니다.

다음 평활화 모델이 지원됩니다.

모델 설명
stupid_backoff 상위 차수 n-gram 개수가 0이면 하위 차수 n-gram 모델로 폴백하고 하위 차수 n-gram 모델에 상수 요소(discount)를 곱합니다. 이것이 기본 평활화 모델입니다.
stupid.backoff.discount 하위 차수 n-gram 모델에 곱할 요소입니다. 선택 사항입니다. 기본값은 0.4입니다.
laplace 가산 평활화를 사용하여 모든 카운트에 상수 alpha를 추가하여 가중치를 균형 있게 조정합니다.
laplace.alpha 가중치를 균형 있게 조정하기 위해 모든 카운트에 추가되는 상수로, 일반적으로 1.0 이하입니다. 선택 사항입니다. 기본값은 0.5입니다.

기본적으로 OpenSearch는 Stupid Backoff 모델을 사용합니다. 이는 가장 높은 차수의 샤인글부터 시작하여 상위 차수 샤인글이 없으면 하위 차수 샤인글을 사용하는 간단한 알고리즘입니다. 예를 들어, 구문 제안기가 3-gram, 2-gram, 1-gram을 갖도록 설정한 경우 Stupid Backoff 모델은 먼저 3-gram을 검사합니다. 3-gram이 없으면 2-gram을 검사하지만 점수에 discount 요소를 곱합니다. 2-gram이 없으면 1-gram을 검사하지만 다시 점수에 discount 요소를 곱합니다. Stupid Backoff 모델은 대부분의 경우 잘 작동합니다. Laplace 평활화 모델을 선택해야 하는 경우 smoothing 매개변수에 지정하세요:

GET books2/_search
{
  "suggest": {
    "phrase-check": {
      "text": "design paterns",
      "phrase": {
        "field": "title.trigram",
        "size" : 1,
        "smoothing" : {
          "laplace" : {
            "alpha" : 0.7
          }
        }
      }
    }
  }
}

후보 생성기

후보 생성기는 입력 텍스트의 용어를 기반으로 가능한 제안 용어를 제공합니다. 사용 가능한 후보 생성기는 direct_generator 하나입니다. 직접 생성기는 용어 제안기와 유사하게 기능합니다. 입력 텍스트의 각 용어에 대해 호출됩니다. 구문 제안기는 여러 후보 생성기를 지원하며, 각 생성기는 입력 텍스트의 각 용어에 대해 호출됩니다. 또한 사전 필터(맞춤법 검사 단계 전에 입력 텍스트 용어를 분석하는 분석기)와 사후 필터(생성된 제안이 반환되기 전에 분석하는 분석기)를 지정할 수 있습니다.

구문 제안기에 대한 직접 생성기를 설정하세요:

GET books2/_search
{
  "suggest": {
    "text": "design paterns",
    "phrase-check": {
      "phrase": {
        "field": "title.trigram",
        "size": 1,
        "direct_generator": [
          {
            "field": "title.trigram",
            "suggest_mode": "always",
            "min_word_length": 3
          }
        ]
      }
    }
  }
}

다음 직접 생성기 옵션을 지정할 수 있습니다.

옵션 설명
field 제안을 가져올 필드입니다. 필수입니다. 각 제안에 대해 또는 전역적으로 설정할 수 있습니다.
size 입력 텍스트의 각 토큰에 대해 반환할 최대 제안 수입니다.
suggest_mode 제안 모드는 각 샤드에서 생성된 제안이 포함되어야 하는 용어를 지정합니다. 제안 모드는 각 샤드의 제안에 적용되며, 다른 샤드의 제안을 결합할 때는 확인되지 않습니다. 따라서 제안 모드가 missing인 경우 용어가 한 샤드에는 없지만 다른 샤드에는 있으면 제안이 반환됩니다. 유효한 값은 다음과 같습니다:
- missing: 샤드에 없는 입력 텍스트 용어에 대해서만 제안을 반환합니다.
- popular: 샤드에서 원래 입력 텍스트보다 문서에 더 자주 나타나는 경우에만 제안을 반환합니다.
- always: 항상 제안을 반환합니다.
기본값은 missing입니다.
max_edits 제안의 최대 편집 거리입니다. 유효한 값은 [1, 2] 범위입니다. 기본값은 2입니다.
prefix_length 일치하는 접두사의 최소 길이를 지정하여 제안 반환을 시작하는 정수입니다. prefix_length의 접두사가 일치하지 않지만 검색어가 여전히 편집 거리 내에 있으면 제안이 반환되지 않습니다. 기본값은 1입니다. 값이 높을수록 맞춤법 검사 성능이 향상됩니다. 철자 오류는 단어의 시작 부분에서 발생하는 경향이 없기 때문입니다.
min_word_length 제안이 포함되기 위해 필요한 최소 길이입니다. 기본값은 4입니다.
max_inspections shard_size의 곱셈 요소입니다. OpenSearch가 제안을 찾기 위해 검사하는 최대 후보 제안 수는 shard_size에 max_inspection을 곱한 값으로 계산됩니다. 성능 저하를 감수하고 정확도를 향상시킬 수 있습니다. 기본값은 5입니다.
min_doc_freq 제안이 반환되기 위해 나타나야 하는 최소 문서 수 또는 백분율입니다. 샤드 수준 문서 빈도가 높은 제안만 반환하여 정확도를 향상시킬 수 있습니다. 유효한 값은 문서 빈도를 나타내는 정수 또는 문서 백분율을 나타내는 [0, 1] 범위의 부동 소수점입니다. 기본값은 0(기능 비활성화)입니다.
max_term_freq 제안이 반환되기 위해 나타나야 하는 최대 문서 수입니다. 유효한 값은 문서 빈도를 나타내는 정수 또는 문서 백분율을 나타내는 [0, 1] 범위의 부동 소수점입니다. 기본값은 0.01입니다. 빈도가 높은 용어는 일반적으로 철자가 정확하기 때문에 이를 제외하면 맞춤법 검사 성능이 향상됩니다. 샤드 수준 문서 빈도를 사용합니다.
pre_filter 제안이 생성되기 전에 생성기에 전달되는 각 입력 텍스트 토큰에 적용되는 분석기입니다.
post_filter 생성된 각 제안이 구문 점수 계산기에 전달되기 전에 적용되는 분석기입니다.

더 알아보기 (Learn more)