FT.SEARCH
는 제공된 쿼리로 색인을 검색하고 지정된 값을 반환합니다.
쿼리 구문에 대한 자세한 내용은 쿼리 구문을 참조하세요.
구문
FT.SEARCH index query [NOCONTENT] [TIMEOUT timeout] [PARAMS nargs name value [ name value ...]] [LIMIT offset num] DIALECT 2
index
(필수): 쿼리하려는 색인입니다.query
(필수): 쿼리입니다. 쿼리 구문에 대한 자세한 내용은 쿼리 구문을 참조하세요.NOCONTENT
(선택사항): 문서 ID만 반환하고 콘텐츠를 제외합니다.TIMEOUT
(선택사항): 검색 명령어의 제한 시간 값을 설정할 수 있습니다.PARAMS
(선택사항): 키 값 쌍 개수에 2를 곱한 값입니다.[LIMIT offset num]
(선택사항): 오프셋과 숫자를 사용하여 페이지로 나누기를 선택할 수 있습니다. 이 매개변수를 사용하지 않는 경우 기본값은 키를 최대 10개까지 반환하는LIMIT 0 10
입니다.DIALECT 2
(선택사항): 언어를 지정합니다. 지원되는 유일한 언어는 언어 2입니다.
명령어 반환
이 명령어는 배열이나 오류 메시지를 반환합니다. 반환된 배열의 요소는 가장 일치하는 쿼리 결과를 나타냅니다. 각 배열 요소에는 다음이 포함됩니다.
항목 해시 키
다음의 배열입니다.
- 키 값: [$score_as ] score_value
- 거리 값
- 속성 이름
- 벡터 값
NOCONTENT
를 사용하면 배열 요소는 문서 ID로만 구성됩니다.
예
이 예시에서는 해시 필드 Vec
에 HNSW 색인을 만들었다고 가정합니다. 다음 필드 이름이 포함된 일부 해시 항목을 이미 추가했고 지정된 입력 벡터와 가장 일치하는 벡터를 찾으려고 한다고 가정해 보겠습니다.
해시 필드 이름:
Vec
- 실제 벡터가 포함된 필드 값입니다.some_hash_key
- 일부 연결된 벡터 메타데이터입니다.
검색을 실행하려면 FT.SEARCH
명령어를 사용합니다.
FT.SEARCH idx "*=>[KNN 3 @vec $BLOB EF_RUNTIME 40 AS score]" PARAMS 2 BLOB "\x12\xa9\xf5\x6c" DIALECT 2
배열 반환:
[3, b'key_192', [b'__embedding_score', b'0.061539709568', b'embedding', b'd\xdeA?\xb7\\xbb>!\xb3\xd8>0\x94n?\xbd\xbco=WX\xe4>kN\x9e>\x1aV0>Z\x92*?\rD\x04>', b'some_hash_key', b'some_hash_key_value_192'], b'key_209', [b'__embedding_score', b'0.0803312063217', b'embedding', b's\xe1W?\xa4\x1d\xad>\xb8\x99Q?\xa9u ?6\xc8\xb2>=j5?!\x13\x96>~\x13\xb9=\xebcX?\x92\x86\xb8>', b'some_hash_key', b'some_hash_key_value_209'], b'key_821', [b'__embedding_score', b'0.0615693926811', b'embedding', b')\x1e\x03?\xa6\x10\xe0>^-\xe5xK?\xbb\xa3\r>\xa1\x00\x87>\x18u\xa2=\x06\xa2;>,\xeb=?\x0e%\xa4>', b'some_hash_key', b'some_hash_key_value_821']]
Nodejs 예시
const Redis = require("ioredis"); const redis = new Redis(); const searchResult = await redis.call("FT.SEARCH", "idx", "*=>[KNN 3 @vector $BLOB EF_RUNTIME 40 AS score]", "PARAMS", "2", "BLOB", "\x00\x00\x00\x00", "DIALECT", "2"); console.log(searchResult);