본문 바로가기
IT

[firebase > firestore database] 검색 기능 구현하기

by 내일은교양왕 2024. 11. 17.

기본적으로 firestore는 문자열 안에 포함되어 있는 단어 검색을 제공하지 않는다. 

그래서 RDB에서 흔히 어떤 단어가 포함되어 있는지 질의하는게 당연한건데,, 지원하지 않는다.

 

그래서 약간의 꼼수로 어느정도 가능하게 할 수 있지만, 100% 커버되는건 아니다.

검색이 중요하다만 타사 솔루션 Algolia 또는 Elastic을 사용해야 한다.

 

꼼수 방법 1

문자열 첫단어를 검색하는 방법 (중간에 있는 문자는 찾을 수 없다.)

**`\uf8ff`를 넣는 이유는 유니코드 범위에서 상당히 뒷자리에 위치하고 있어서 우리가 사용하는 어떤 문자열이 들어와도 검색이 가능하게끔 한다.

const q = query(
  hashtagRef,
  where('__name__', '>=', value),
  where('__name__', '<=', value + '\uf8ff'),
)

 

 

꼼수 방법2

다른 솔루션을 사용하기 어렵다면 성능을 포기하고 한가지 방법이 있다.

문자열을 empty space 단위로 쪼개서 배열을 만든 후, 그 배열을 firestore에 넣는다.

 

const q = query(citiesRef, where("regions", "array-contains", "coast"));

 

 


**`\uf8ff` 는 Private Use Area에 속하는 문자. 일반적으로 표준화된 문자로 사용되지 않고, 특정회사나 시스템이 사용자 정의 용도로 사용하는 영역에 할당된 코드 포인트