elasticsearch - suggester

conquernos·2022년 6월 20일
0

elasticsearch

목록 보기
1/1

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)
    • 0~1 : percentage
    • 1~ : DF
  • string_distance : 편집 거리 계산 방식
    • internal : 최적화된 damerau_levenshtein
    • damerau_levenshtein
      • 편집 종류 : 삽입, 삭제, 치환, 순서 바꿈(transpose)
      • transpose : 인접한 두 개의 문자 교환
    • levenshtein
      • 편집 종류 : 삽입, 삭제, 치환
    • jaro_winkler : 편집 거리 게산할 때 특정 케이스에 더 높은 점수
      • 각 문자열에 동일한 글자가 문자열 내 특정 거리 내에 있을 경우
      • 일치하는 prefix 길이가 길 수록 더 높은 점수 (방향성)
    • ngram : 문자열을 n-gram으로 나눠서 일치하는 gram 수를 계산
profile
search engineer

0개의 댓글