1. 엘라스틱 서치 쓰지말고, 자체 풀텍스트 엔진 안 쓰고 SQL 검색해보자
한글을 예를 들어보자
누가 게시물을 작성했고 이걸 검색을 위해서 인덱싱을 하려는데 (이 게시물의 번호는 5번이라고 가정)
게시물 단어들을 띄어쓰기로 분리를 해
그 중에 "산딸기"라는 단어가 있다면
Word / Number / Part
"산딸기" / 5 / 100
"산딸" / 5 / 66
"딸기" / 5 / 66
"산" / 5 / 33
"딸" / 5 / 33
"기" / 5 / 33
이렇게 등록이 되는 거야
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
그리고 다른 게시물이 작성됐고 (이 게시물의 번호는 9번이라고 가정)
그 중에서 "딸기"라는 단어가 있다면
Word / Number / Part
"딸기" / 9 / 100
"딸" / 9 / 50
"기" / 9 / 50
이렇게 등록이 되는 거야
그래서 누가 "딸기"로 검색하면
SELECT Number FROM WordIndexTable WHERE Word = "딸기" ORDER BY Part DESC
이러면 딸기가 포함된 게시물들이 9번, 5번 순으로 조회되지.
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
누가 "빨간 딸기"로 검색하면
2번 "빨간", "딸기" 돌려야해
그래서 나온 것들을 임시 테이블에 담았다가
여기에서 ORDER BY Part DESC로 해서 리턴하면 역시 9번, 5번 순으로 조회되지.
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
누가 "산딸기"로 검색하면
이건 3번 돌릴 거야
"산딸기", "산딸", "딸기"
전체 길이의 절반 초과하도록만 분리하고
그래서 나온 것들을 임시 테이블에 담았다가
리턴하면 결과의 길이순, 정확도로 정렬하고 중복 제거하면 5번, 9번 순으로 조회되지
음......... 그냥 엘라스틱 서치 쓸까?
댓글 0