nowrobin / ecrire

https://ecrire-roan.vercel.app
0 stars 0 forks source link

검색어 기능 구현중 생긴 문제점들 #32

Open nowrobin opened 2 months ago

nowrobin commented 2 months ago

상황

검색어 기능을 구현하기 위해서 https://www.prisma.io/docs/orm/prisma-client/queries/full-text-search 을 참고해서, title, author, full-content 로 GET 요청에 param로 넘겨준 키워드로 검색하는 기능을 만들었다.

RAW SQL이 아닌 ORM 으로 구현하였고 검색어 API호출은 디바운싱 기법을 사용해서 최소한의 요청만 보내려고 했다.

문제점

내가 생각하는 문제 발생 이유

first 우선 GET method에 파라미터를 넘겨주기위해서 { params }: { params: { quote_id: string } }을 사용해서 넘겨받았는데 해당 방법이 작동은 하지만 좋은 방법이 아닌것같다 , 이렇게 되면 "/api/search-keyword/${keyword}로 보내야되는데 해당 키워드는 한글이여 %-enconded 로 넘어가기 때문에 좋은 방법은 아닌것 같다 .

second
디바운스 기법을 사용하면서 사용한 useCallback 에서 callback 함수인 getQuote 함수가 한번더 불러와져서 해당 리스트를 초기화 시키는것같다. useCallback 의 의존성을 다른 변수로 바꿔주는 작업이 필요한것같다.

nowrobin commented 2 months ago

추가적으로 발견 한 문제: 검색어 1: '우리는' 검색어 2: '우리'

당연히 검색어 2 가 더 많은 결과를 반환해야하지만, 검색어 1이 더 많은 결과를 반환하는걸 알았다. ... 검색기능이 많이 이상하다. 추가적으로 알게된것은 검색어에 띄어쓰기가 있으면 에러가 난다, 따라서 사람들이 하는 방법 으로 white space를 Regex 로해서 바꾸거나, split(" ").join(" | ") == OR split(" ").join(" & ") ==AND 같은 방법으로 바꾼다. 일단 Postgresql 에서는 Fulltext index 가 없어서 그렇다