본문 바로가기

D.S/DE

220225금 - NoSQL 데이터를 SQL에 넣는다는 건

728x90

 

다른 일들로 인해 작업이 끊겼다.

 

spotify에서 가져온 artist, music 데이터를 사용해서 정형데이터를 보충해주려고 하는데. 문제는 역시 스쳐 지나가지 않는다. dataframe에 spotify 데이터를 넣어주는 작업만 하면 elt 파이프라인 70%는 끝나는데..

 

NoSQL 데이터를 SQL에 넣으려할 때 생기는 참사(?)

질의를 하면 유사한 문서들이 다량으로 발견된다.

예를 들어, artist: Lesuire, track:Nobody 로 검색하면

무려 item이 4개나 검색된다. item 내용이 길어서 track 이름 만 뽑아보면


['Nobody (feat. Gold Link)', 
'Nobody (feat. Gold Link)', 
'Nobody (feat. Gold Link)', 
'Nobody']

뭐 같은 이름의 artist나 track이름은 예상했는데 두 개를 조합해서도 중복문서가 나오는 건 깜박하고 있었네..

 

json 형태로 데이터를 던져주는 모양새와 search함수에서 q:로 시작되는 질의문에 혹시 루씬기반..? NoSQL을 쓸거같다 했는데 이걸로 분명해졌다. NoSQL spotify라 검색해보니 카산드라를 사용하는 듯하다. 카산드라가 루씬기반인지는 잘 모르겠다. 그냥 루씬 NoSQL 검색하면 es만 검색되서..

 

그리고 다른 문제.

이것도 NoSQL 기반 문제..라고 해야 하나

spotify 데이터를 넣어주는데 질의가..띄어쓰기 잘못하면 검색이 안 된다.

예를 들어서, track:Nobody(feat. Goldlink)라 질의하면 검색결과가 없다고 뜬다. 대소문자는 그래도 괜찮은데 띄어쓰기에는 쥐약..

DB에서 역색인을 사용하면 기본적으로 영어는 띄어쓰기로 단어를 잘라서 할 텐데.. 스포티파이가 어떤 ingest pipeline을 쓰는지는 모르지만 어쨋든 영어는 띄어쓰기 기본으로 자르니까..

 

영어도..띄어쓰기 API 있나요? ㅋㅋ 근데 artist 이름 띄어쓰기...맞춤법이 의미가 있나. 불가능하쟌..

 

어쩐다; 이 spotify 데이터를 es에 그대로 넣고 track:Nobody(feat. Goldlink) 로 검색하면 어쨋든 검색은될까? 그냥 검색해서 찾아지는 데이터만 먼저 넣어주고 es에 넣은 다음 검색을 해봐야겠다.

es 분석기 부분도 좀 들여다봐야 하는데..

 

반응형