File size: 1,323 Bytes
cf57c77 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | use redis::{self, RedisResult};
pub fn ensure_redisearch_index(
redis: &redis::Client,
vector_dimensions: usize,
distance_metric: &str,
) -> RedisResult<()> {
let mut con = redis.get_connection()?;
let index_name = "motorhead";
let index_info: Result<redis::Value, _> = redis::cmd("FT.INFO").arg(index_name).query(&mut con);
if let Err(err) = index_info {
if err.to_string().contains("Unknown: Index name") {
redis::cmd("FT.CREATE")
.arg(index_name)
.arg("ON")
.arg("HASH")
.arg("PREFIX")
.arg("1")
.arg("motorhead:")
.arg("SCHEMA")
.arg("session")
.arg("TEXT")
.arg("content")
.arg("TEXT")
.arg("role")
.arg("TEXT")
.arg("vector")
.arg("VECTOR")
.arg("HNSW")
.arg("6")
.arg("TYPE")
.arg("FLOAT32")
.arg("DIM")
.arg(vector_dimensions.to_string())
.arg("DISTANCE_METRIC")
.arg(distance_metric)
.query(&mut con)?;
} else {
return Err(err);
}
}
Ok(())
}
|