Redisearch 검색하기

Redisearch 검색하기

인덱스를 만들었으면 FT.SEARCH 명령어로 데이터를 검색할 수 있어요. Redisearch는 풀텍스트 검색, 정확 매치(태그) 검색, 숫자·지리 필터, 벡터 검색을 하나의 쿼리로 조합할 수 있는 게 특징이에요.

출처: https://redis.io/docs/latest/develop/data-types/search/query/

기본 검색

FT.SEARCH에 인덱스 이름과 쿼리를 넘겨요. 쿼리 문법은 @필드:값 형태를 써요.

FT.SEARCH idx:books "@title:magic"

모든 필드를 대상으로 하려면 필드 지정 없이 단어만 쓰면 돼요. *는 모든 문서를 의미해요.

필터와 정렬

숫자 범위 필터는 @price:[100 500]처럼 대괄호로 범위를 지정하고, 태그 정확 매치는 @genre:{fantasy}처럼 중괄호를 써요. 정렬은 SORTBY로 지정해요.

FT.SEARCH idx:books "@title:magic @price:[100 500]" SORTBY price DESC

페이지네이션

LIMIT로 결과의 시작 위치와 개수를 제어해요. 기본은 첫 10건이에요.

FT.SEARCH idx:books "*" LIMIT 0 20

벡터 검색

벡터 필드를 KNN 검색하려면 쿼리에 *=>[KNN 5 @embedding $BLOB] 형태를 쓰고, $BLOB 파라미터로 쿼리 벡터를 넘겨요. KNN 5는 가장 가까운 5개를 찾는다는 뜻이에요.

FT.SEARCH idx:embeddings "*=>[KNN 5 @embedding $BLOB]" PARAMS 2 BLOB "\x12\x34..." DIALECT 3

Redisearch 쿼리 최신 다이얼렉트(문법 버전)를 쓰려면 DIALECT 3을 명시하는 것도 방법이에요.

더 알아보기