suggester
주어진 문자열과 유사해보이는 term 들을 제시함
공통 options
- text : suggestion 대상 문자열 (input text)
- field : suggestion 후보 선정 대상 필드 (해당 필드 term 내에서 선정)
- analyzer : input text를 분석할 analyzer (defulat : 색인에서 사용한 analyzer)
- size : suggestion 결과 수
- sort : suggestion 결과 정렬 방법
- score : similarity > DF > term
- frequency : DF > similarity > term
- suggest_mode : suggestion 후보 선정 필터링 방식
- missing : input text 중 색인에 없는 term에 대해서만 제안
- popular : suggestion 결과 중 input text 보다 DF가 높은 후보 중에서만 제시
- always : 필터링 없이 제시
term suggester
편집 거리 알고리즘에 기반해 token 마다 유사한 term 들을 제시함
- 편집 거리 : 두 문자열의 문자 기반 유사도 값으로 sim(A, B) = A의 문자 몇 개를 삽입/삭제/치환 등을 해서 B와 같아지는 지를 구함
options
- max_egits : 최대 편집 거리 (only 1 or 2, default : 2)
- prefix_length : 같아야 하는 prefix 문자 개수
- min_word_length : input text 중 해당 길이 이상인 term에 대해서만 제안
- shard_size : 각 shard 별 top N개의 후보 추출 (default : size와 동일)
- max_inspections : 정확도 향상을 위해 각 shard 별로 얼마나 많은 후보를 조사할 지에 대한 값 (shards_szie * max_inspections, default : 5)
- min_doc_freq : 최소 DF threshold (default : 0)
- max_term_freq : 최대 DF threshold (default : 0.01)
- string_distance : 편집 거리 계산 방식
- internal : 최적화된 damerau_levenshtein
- damerau_levenshtein
- 편집 종류 : 삽입, 삭제, 치환, 순서 바꿈(transpose)
- transpose : 인접한 두 개의 문자 교환
- levenshtein
- jaro_winkler : 편집 거리 게산할 때 특정 케이스에 더 높은 점수
- 각 문자열에 동일한 글자가 문자열 내 특정 거리 내에 있을 경우
- 일치하는 prefix 길이가 길 수록 더 높은 점수 (방향성)
- ngram : 문자열을 n-gram으로 나눠서 일치하는 gram 수를 계산