기본적으로 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에 속하는 문자. 일반적으로 표준화된 문자로 사용되지 않고, 특정회사나 시스템이 사용자 정의 용도로 사용하는 영역에 할당된 코드 포인트
'IT' 카테고리의 다른 글
[redis] 싱글 쓰레드 철학 (1) | 2024.11.18 |
---|---|
Server Driven UI (1) | 2024.11.18 |
디자인 시스템의 깨진 약속들 (1) | 2024.11.16 |
[요점 정리] 난생처음 만드는 Vite 플러그인 - 이은재 (0) | 2024.09.11 |
[요점 정리] 인프런 아키텍처 2024-2025 - 이동욱 (0) | 2024.09.10 |