Tips
눈으로 보기에 같은 글자이지만 다른 글자로 인식되는 경우에는 아스키코드를 뽑아보자
Hyunie
2023. 6. 12. 23:09
728x90
반응형
현재까지 수집된 검색어를 대상으로 추천 검색어를 추출하는데, 입력된 검색어와 달라야하는 조건이 있었다. "한복"을 검색했는데 "한복"을 추천해주는 건 의미가 없으니.
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
반응형