-
눈으로 보기에 같은 글자이지만 다른 글자로 인식되는 경우에는 아스키코드를 뽑아보자Tips 2023. 6. 12. 23:09728x90반응형
현재까지 수집된 검색어를 대상으로 추천 검색어를 추출하는데, 입력된 검색어와 달라야하는 조건이 있었다. "한복"을 검색했는데 "한복"을 추천해주는 건 의미가 없으니.
select input_s."query" as input_query , rmcd_s."query" as rcmd_query from searched_quries as input_s join searched_queries as rcmd_s on input_s.user_id = rcmd_s.user_id where input_s."query" != rcmd_s."query"
(위의 코드는 실제 데이터를 추출한 코드에서 로직만 간략하게 표시한 코드이다)
join시 where절에 input 검색어 != 추천 검색어 조건을 걸어줬는데도 다음과 같이 같은 단어가 추천 검색어 후보로 뽑혔다.
혹시나 공백이 있을 수 있어 trim()함수를 사용했으나, 동일한 결과가 나타났다.
컴퓨터는 내부적으로 문자열을 ascii코드로 변환해 저장하므로, 왜 두 단어를 다른 단어로 인식하는지 원인을 파악하기 위해 ascii()함수를 사용해 뽑아봤다.
위와 같이 input_query의 시작 단어는 아스키 8로 백스페이스, rcmd_query의 시작 단어는 "한"의 아스키코드인 54620이 출력되는 것을 확인했다. trim()으로도 삭제가 안되니 replace 함수를 사용했다.
select input_s."query" as input_query , rmcd_s."query" as rcmd_query from searched_quries as input_s join searched_queries as rcmd_s on input_s.user_id = rcmd_s.user_id where REPLACE(trim(input_s."query"), CHR(8), '') != REPLACE(trim(rcmd_s."query"), CHR(8), '')
끝..(어떻게 마무리해야할지 모르겠음)
728x90반응형'Tips' 카테고리의 다른 글
따옴표 또는 쌍따옴표가 포함된 문자열을 DB API로 적재하기 (0) 2023.10.24 colab에서 mecab 설치 실패시 해결 방법 (error: subprocess-exited-with-error) (0) 2023.08.24 Javascript에서 서버 시간대에 상관없이 한국 시간으로 현재 날짜 호출하기 (0) 2023.05.16 우분투에 Curl 최신 버전 설치하기 (http 400, 500에러 실패 처리하기 (--fail 옵션), curl: option --retry-all-errors: is unknown 에러 해결) (0) 2023.01.30 apt vs apt-get vs apt-cache차이, remove vs purge vs auto-remove 차이 (0) 2023.01.30