Closed O-Wensu closed 2 months ago
Elasticsearch를 사용하여 커뮤니티에서 검색 수행 시 자동 완성 기능구현
must: 쿼리가 참인 문서 검색 must_not: 쿼리가 거짓인 문서 검색 should: 검색 결과 중 이 쿼리에 해당하는 문서의 점수를 높임 filter: 쿼리가 참인 문서를 검색하지만, 스코어를 계산하지 않음
검색어: "동해물과 백두산이 마르고 닳도록" 2-gram 분석 결과: ["동해", "해물", "물과", "백두", "두산", "산이", "마르", "르고", "닳도", "도록"] 3-gram 분석 결과: ["동해물", "해물과", "백두산", "두산이", "마르고", "닳도록"]
Nori는 백두산을 ["백두", "산"]으로 분리하기 때문에 검색어가 "두산"인 경우 "백두산"이 결과에 나오지 않음 하지만 N-gram은 2,3-gram: ["백두", "두산", "백두산"] 으로 분리되어 결과에 나옴
하지만, 관련이 적은 결과가 포함될 수 있어 가장 낮은 우선 순위를 갖도록 함
이슈 번호 (#300 )
요약
Elasticsearch를 사용하여 커뮤니티에서 검색 수행 시 자동 완성 기능구현
변경 내용
[자동 완성 쿼리]
1. Bool 쿼리
must: 쿼리가 참인 문서 검색 must_not: 쿼리가 거짓인 문서 검색 should: 검색 결과 중 이 쿼리에 해당하는 문서의 점수를 높임 filter: 쿼리가 참인 문서를 검색하지만, 스코어를 계산하지 않음
2. match_phrase 쿼리
2-1. slop: 1
2-2. boost: 3.0
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: ["백두", "두산", "백두산"] 으로 분리되어 결과에 나옴
하지만, 관련이 적은 결과가 포함될 수 있어 가장 낮은 우선 순위를 갖도록 함