Vegan-Life / VeganLife-Backend

채식주의자를 위한 식단 및 영양관리 앱 BE
2 stars 0 forks source link

[FEATURE] Elasticsearch를 사용한 커뮤니티 검색 자동 완성 기능 구현 #306

Closed O-Wensu closed 1 month ago

O-Wensu commented 1 month ago

이슈 번호 (#300 )

요약

Elasticsearch를 사용하여 커뮤니티에서 검색 수행 시 자동 완성 기능구현

변경 내용

[자동 완성 쿼리]

1. Bool 쿼리

must: 쿼리가 참인 문서 검색 must_not: 쿼리가 거짓인 문서 검색 should: 검색 결과 중 이 쿼리에 해당하는 문서의 점수를 높임 filter: 쿼리가 참인 문서를 검색하지만, 스코어를 계산하지 않음

2. match_phrase 쿼리

2-1. slop: 1

3. match 쿼리 (Nori 분석기 사용)

3-1. operator: "and"

3-2. boost: 2.0

3-3. fuzziness: 1

5. match 쿼리 (N-gram 분석기 사용)

5-1. 예시

검색어: "동해물과 백두산이 마르고 닳도록" 2-gram 분석 결과: ["동해", "해물", "물과", "백두", "두산", "산이", "마르", "르고", "닳도", "도록"] 3-gram 분석 결과: ["동해물", "해물과", "백두산", "두산이", "마르고", "닳도록"]

5-2. Nori와 N-gram

Nori는 백두산을 ["백두", "산"]으로 분리하기 때문에 검색어가 "두산"인 경우 "백두산"이 결과에 나오지 않음 하지만 N-gram은 2,3-gram: ["백두", "두산", "백두산"] 으로 분리되어 결과에 나옴

하지만, 관련이 적은 결과가 포함될 수 있어 가장 낮은 우선 순위를 갖도록 함