본문 바로가기
Computer Science/Algorithm

Full text search를 위한 검색 array 알고리즘

by 하상원이야 2022. 10. 24.

Hi 난 하상원 27세

오늘은 소소한 알고리즘 코드를 짜는 일이 있어서 적어보려고 한다.

 

파이어 베이스는 풀 텍스트 서치를 지원하지 않는다.

만약 DB에 하상원이라는 문자열이 저장되어 있다면,

검색 기능을 만들었을 때  where( 검색어, ==, name ) 으로 검색할 수 있다.

하지만 이건 검색창에 꼭 하상원을 써야한다. 상원으로는 검색할 수 없다.

 

그렇다면 모든 데이터를 받아와서 스테이트에 저장하고 내부에서 검색하면 어떨까

그건 안된다.

검색 한 번 할 때마다 모든 데이터를 저장하고 저장한 스테이트에서 필터를 돌려야하는데,

파이어 베이스는 리드 수 당 돈을 낸다. 고로 이따위로 짰다간 회사가 망할 수 있다.

 

대신에 파이어베이스엔 array-contains-any가 있다.

검색어가 배열 중 뭐 하나만 포함하고 있으면 반환한다.

where( 검색어, array-contains, nameArray )

이렇게 쓰는데, 만약에 이름이 하상원이라고 들어오면 추가적으로 하상원을 검색할 수 있는 모든 조건을 배열 안에 넣어주면 되는 것이다 !

[하, 상, 원, 하상, 상원, 하상원] <- 이렇게 만들고 여기서 검색하면 유사 풀 텍스트 서치가 완성된다.

 

그래서 Full text search를 위한 검색 array 알고리즘을 만들게 되었다.

은근히 아이디어 안 떠오르는게 약올라서 블로그에 정리한다.

지깟게 까불어봐야 반복문 아니겠나 ㅋ

 

대충 내용은 전체 문자열 길이만큼 반복하고(한 개일때, 두 개일때 등의 연속적인 문자)

그 안에서 첫번째에서 시작, 두번째에서 시작 이렇게 하면서 길이만큼 딱 떨어지게 저장했다.

하원을 검색하면 하상원이 나올 필요는 없으니까 그랬다.

코드

 

하여튼 이렇게 끝이 났다.

열심히 공부하고 잘 일하자

아자아자 화이팅

반응형

댓글