import psycopg2
from psycopg2 import sql
def hybrid_search(query, num_results_sim, num_results_ft):
# Connect to your Supabase database
conn = psycopg2.connect(database="your_database", user="your_username", password="your_password", host="your_host", port="your_port")
cur = conn.cursor()
# Perform similarity search
sim_query = sql.SQL("SELECT * FROM your_table WHERE pgvector_distance(your_column, {}) <= {} ORDER BY pgvector_distance LIMIT {}").format(sql.Identifier(query), sql.Identifier(num_results_sim))
cur.execute(sim_query)
sim_results = cur.fetchall()
# Perform full-text search
ft_query = sql.SQL("SELECT * FROM your_table WHERE to_tsvector(your_column) @@ plainto_tsquery({}) ORDER BY ts_rank_cd(to_tsvector(your_column), plainto_tsquery({})) DESC LIMIT {}").format(sql.Identifier(query), sql.Identifier(query), sql.Identifier(num_results_ft))
cur.execute(ft_query)
ft_results = cur.fetchall()
# Combine and return results
results = sim_results + ft_results
return results
import psycopg2
from psycopg2 import sql
def hybrid_search(query, num_results_sim, num_results_ft):
# Connect to your Supabase database
conn = psycopg2.connect(database="your_database", user="your_username", password="your_password", host="your_host", port="your_port")
cur = conn.cursor()
# Perform similarity search
sim_query = sql.SQL("SELECT * FROM your_table WHERE pgvector_distance(your_column, {}) <= {} ORDER BY pgvector_distance LIMIT {}").format(sql.Identifier(query), sql.Identifier(num_results_sim))
cur.execute(sim_query)
sim_results = cur.fetchall()
# Perform full-text search
ft_query = sql.SQL("SELECT * FROM your_table WHERE to_tsvector(your_column) @@ plainto_tsquery({}) ORDER BY ts_rank_cd(to_tsvector(your_column), plainto_tsquery({})) DESC LIMIT {}").format(sql.Identifier(query), sql.Identifier(query), sql.Identifier(num_results_ft))
cur.execute(ft_query)
ft_results = cur.fetchall()
# Combine and return results
results = sim_results + ft_results
return results