이슈 1. 레벤슈타인 거리에만 의존하면 영화 제목 길이에 의한 영향을 많이 받음

유저의 최애 영화 : '혹성탈출'

SELECT id, title
FROM movies_movie
ORDER BY calc_distance(title, '{best_movie}')
LIMIT 5

Untitled

다른 혹성탈출 시리즈 영화들이 존재하지만 제목의 길이 차이로 인해 레벤슈타인 거리 값이 높아 TOP 5 안에 들지 못함

⇒ 유저가 입력한 키워드를 포함하는 제목을 전제로 검색하도록 해서 개선

유저의 최애 영화 : '혹성탈출'

SELECT id
FROM movies_movie 
WHERE title LIKE '%{best_movie}%'
ORDER BY calc_distance(title, '{best_movie}')
LIMIT 5

Untitled

이슈 2. DB에 저장된 제목과 공백이 불일치 하게 키워드를 입력하는 경우 검색이 되지 않음

유저의 최애 영화 : '혹성 탈출'

SELECT id, title
FROM movies_movie
WHERE title LIKE '%{best_movie}%'
ORDER BY calc_distance(title, '{best_movie}')
LIMIT 5

Untitled

DB 에 저장된 제목은 ‘혹성탈출’ 로 공백이 없는데 입력값에는 공백이 포함되므로 제대로 검색이 안됨

⇒ DB에 저장된 제목과 유저의 입력값을 비교하는 과정에서 모든 공백을 제거하여 개선

SELECT id
FROM movies_movie 
WHERE REPLACE(title, ' ', '') LIKE '%{space_removed_title}%'
ORDER BY calc_distance(REPLACE(title, ' ', ''), '{space_removed_title}')
LIMIT 1

Untitled