Finder 검색 기능은 Landing Page 에서 검색 창의 OnChange 되는 단어들을 body부분으로 감싼 후 백엔드에 보내는 식이다.
수정 전 코드
Product.find()
.find({ $text: { $search: term } })
like 의 %term% / term% / %term 기능을 사용하고 싶어 검색해 본 결과 regex로 변경하였다.
수정 후 코드
Product.find()
.find({ title: { $regex: term, $options: "i" } })
대용량 처리 속도가 text 보단 regex 가 훨씬 높다고 나와있었고 테스트 실행결과 검색 속도가 2배 이상 빨라진건 느낄수 있었다.
참조문서 에서도 나와있듯이 regex 는 연산자를 사용하여 문자열의 시작 부분에서 검색을 하지 않으므로 부분 텍스트를 검색할 수 있게되어 많은 패턴들을 받아올 수 있다.
하지만 text 전체 텍스트 인덱스로 받아 들여 부분적인 텍스트를 받아오지 못한다. 그래서 SQL like 쿼리처럼 사용을 못했던거 같다.