테스트 기준
MySQL Workbench 8.0을 사용하고 검색 키워드는 “황토집 짓기”를 사용한다.
변수는 ngram_token_size = 2, innodb_ft_min_token_size = 1을 설정하여 인덱싱한다.
인덱싱 기법은 구분자 기법, N gram 기법을, 검색 방식은 아래 세 명령어를 사용한다.
SELECT * FROM book WHERE MATCH(book_name) AGAINST('황토집 짓기');
SELECT * FROM book WHERE MATCH(book_name) AGAINST('황토집 짓기' IN boolean mode);
SELECT * FROM book WHERE MATCH(book_name) AGAINST('+황토집 +짓기' IN boolean mode)
SQL
복사
예상 결과
구분자 기법 : keyword를 구분자로 분류하여 저장, 검색 시에는 입력값이 저장된 값과 정확히 동일한 데이터를 출력
N-Gram 기법 : 2글자씩 분류하여 저장, 검색 시 입력값을 2글자씩 분류하여 저장한 값과 일치하는 데이터를 출력
•
CASE1. SELECT * FROM book WHERE MATCH(book_name) AGAINST('황토집 짓기');
구분자 기법의 경우 황토집, 짓기가 띄어쓰기로 정확히 구분된 데이터가 출력될 것으로 예상
N-Gram 기법의 경우 황토, 토집, 집짓, 짓기가 포함된 결과가 모두 출력될 것으로 예상
•
CASE2. SELECT * FROM book WHERE MATCH(book_name) AGAINST('황토집 짓기' IN boolean mode);
구분자 기법의 경우 boolean mode를 실행하더라도 별도의 연산자가 없기에 CASE 1과 동일한 출력을 보일 것으로 예상
N-Gram 기법의 경우에는 boolean mode 연산 시 분류된 토큰의 순서가 일치하는지를 확인하는 과정이 추가되기에 황토집, 토집짓, 집짓기 와 같이 분류된 결과 중 토큰 순서가 일치하는 결과가 출력될 것으로 예상
•
CASE3. SELECT * FROM book WHERE MATCH(book_name) AGAINST('+황토집 +짓기' IN boolean mode)
구분자 기법의 경우 CASE1의 결과 중 ‘황토집’과 ‘짓기’가 모두 포함된 결과가 출력될 것으로 예상
N-Gram 기법의 경우 구분자 기법과 동일하게 ‘황토집’과 ‘짓기’가 모두 포함된 결과가 출력될 것으로 예상되나, 구분자 기법과는 다르게 띄어쓰기 없이 작성된 결과도 출력될 것으로 예상
테스트 결과 및 분석
예상했던 내용과는 일부가 다른 결과를 보였다.
N gram 검색의 경우 띄어쓰기를 기준으로 별개의 토큰을 계산하여 황토, 토집, 짓기 세 단어를 기준으로 검색을 하였고, boolean의 경우에도 황토집, 짓기만 기준으로 검색을 실시하였다.
검색 테스트 시 조건 별 결과 분석은 아래와 같다.
구분자 기법 | N-Gram 기법 |
구분자를 제대로 지정하지 않거나 데이터 입력 시 띄어쓰기 등의 구분법을 하지 않을 경우 검색되지 않은 데이터가 있음. | 단어의 형태만 일치한다면 모든 데이터를 검색 가능. |
CASE1 | CASE2 | CASE3 |
단어의 일부만 일치해도 데이터를 출력하기에 대부분의 데이터를 확인할 수 있으나 정확도가 떨어짐 | 단어의 일부가 일치하는지 여부와 함께 일치하는 단어의 순서를 확인하기에 조금 더 정확한 데이터를 얻을 수 있음. | 정확히 해당 단어가 포함되는지를 검색하기에 검색어 기준으로 정확한 데이터를 얻을 수 있으나 오타, 혹은 잘못된 지식으로 검색 시도 시 데이터를 확인할 수 없음. |
동일한 문장이라도 구분자에 따라 검색 유무가 변동되는 구분자 기법은 사용자가 데이터 입력 시 별도의 주의를 주어야 하는 불편함이 있기에 N-Gram 기법이 이번 프로젝트에는 걸맞는 기법으로 보인다.
또한 CASE1의 경우는 긴 단어의 경우 지나치게 많은 데이터를 확인할 수 있기에 검색 정확도가 떨어지고, CASE3의 경우는 정확한 단어를 사용할 경우 정확한 데이터를 확인할 수 있지만 사용자가 정확한 단어를 사용한다는 보장이 없기에 유연한 검색을 위해 CASE2의 쿼리문을 사용하는 것이 더욱 효과적일 것이라 판단하였다.