TIL 23.12.11

ν™©μ€ν•˜Β·2023λ…„ 12μ›” 11일
0

TIL

λͺ©λ‘ 보기
132/146

πŸ“ŒToday I Learned

ElasticSearch

데이터 색인(Index)

  • μ—˜λΌμŠ€ν‹±μ„œμΉ˜λŠ” 데이터λ₯Ό μ €μž₯ν•  λ•Œ 색인을 κ±°μ³μ„œ μ €μž₯이 λœλ‹€.
  • 색인 κ³Όμ •.. (μ—˜λΌμŠ€ν‹±μ„œμΉ˜κ°€ μ–΄λ–€ ꡬ쑰둜 데이터λ₯Ό μ €μž₯ + μ‚¬μš©ν•˜λŠ”μ§€)

μ—­μΈλ±μŠ€, Inverted Index

찾을 단어(term)κ°€ μΈλ±μŠ€κ°€ λœλ‹€. document idκ°€ 값이 λœλ‹€.

μ‹€μ œλ‘œ μ €μž₯될 λ•Œ λͺ¨λ“  λ‹¨μ–΄λ§ˆλ‹€ μΈλ±μŠ€κ°€ λ˜λŠ” 것이 μ•„λ‹ˆκ³ , μ‚¬μ „μ‹μœΌλ‘œ μ •λ ¬ν•œ λ’€ 동사 κΈ°μ€€ λΉ„μŠ·ν•œ 단어듀을 뭉쳐 인덱슀λ₯Ό λ§Œλ“ λ‹€.
'애널라이저'λ₯Ό μ‚¬μš©ν•œλ‹€.

애널라이저

캐릭터필터 -> ν† ν¬λ‚˜μ΄μ € -> 토큰필터

ν† ν¬λ‚˜μ΄μ € -> λ¬Έμž₯을 토큰(whitespace)으둜 λ‚˜λˆˆλ‹€.
그리고 μ €μž₯ν•œλ‹€.

λ‘œμš°μΌ€μ΄μŠ€ν•„ν„°(lowercase filter)

  • λͺ¨λ“  term을 μ†Œλ¬Έμžλ‘œ λ°”κΎΌλ‹€.
    => 같은 term은 ν•˜λ‚˜λ‘œ ν•©μΉœλ‹€.

stop filter

  • Stopword == λΆˆμš©μ–΄ - κ²€μƒ‰μ–΄λ‘œμ„œ κ°€μΉ˜κ°€ μ—†λŠ” 단어(관사, μ „μΉ˜μ‚¬ ...)
    제거

snowball filter

  • ν˜•νƒœμ†Œ 뢄석 -> κΈ°λ³Έ ν˜•νƒœλ‘œ λ³€ν™˜

기본은 whitespace ν† ν¬λ‚˜μ΄μ €λ§Œ λ™μž‘ν•œλ‹€.

λ©΄μ ‘μ—μ„œ μ—˜λΌμŠ€ν‹±μ„œμΉ˜κ°€ 무엇인가? 물어보면,
μ—­μΈλ±μŠ€κ°€ κΌ­ λ“€μ–΄κ°€μ•Ό ν•œλ‹€.

... JSON 포맷의 데이터닀.
rest api, json, μ—­μΈλ±μŠ€ ꡬ쑰λ₯Ό μ‚¬μš©ν•΄μ„œ 검색에 μœ μš©ν•˜λ‹€.

이런 μ‹μœΌλ‘œ λ‚΄κ°€ 이해할 수 μžˆλŠ” μ •λ„μ˜ ν•œ λ¬Έμž₯으둜 μ •λ¦¬ν•˜κΈ°.

μ •μ˜μ— λ‹΅ν•  수 있게 μ€€λΉ„ν•˜κΈ°


μ˜μ–΄ ν˜•νƒœμ†Œ 뢄석기

  • snowball

ν•œκΈ€ ν˜•νƒœμ†Œ 뢄석기

  • ES 6.X 적용 > Nori ν˜•νƒœμ†Œ 뢄석 채택

Nori μ„€μΉ˜ν•˜κΈ°

profile
μ°¨κ·Όμ°¨κ·Ό ν•˜λ‚˜μ”©

0개의 λŒ“κΈ€