Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion internal/store/db.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion internal/store/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

53 changes: 52 additions & 1 deletion internal/store/query.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions query.sql
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,16 @@ JOIN documents d ON d.id = e.document_id
WHERE (sqlc.narg(metadata_hash)::text IS NULL OR e.metadata_hash = sqlc.narg(metadata_hash)::text)
ORDER BY e.created_at DESC;

-- name: SearchDocumentsBM25 :many
SELECT
d.id,
d.file_path,
d.total_chunk_size,
d.created_at,
d.updated_at,
-- BM25 rank:
ts_rank_cd(d.text_searchable_column, to_tsquery('english', $1)) AS rank
FROM documents d
WHERE d.text_searchable_column @@ to_tsquery('english', $1)
ORDER BY rank DESC
LIMIT 50;
28 changes: 28 additions & 0 deletions store/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,18 @@ ALTER TABLE public.documents OWNER TO admin;
-- Name: documents_id_seq; Type: SEQUENCE; Schema: public; Owner: admin
--

-- a tsvector column for full-text search in the documents table

ALTER TABLE public.documents
ADD COLUMN text_searchable_column tsvector;


-- just converting file_path for now

UPDATE public.documents
SET text_searchable_column = to_tsvector('english', file_path);


CREATE SEQUENCE public.documents_id_seq
START WITH 1
INCREMENT BY 1
Expand Down Expand Up @@ -557,3 +569,19 @@ ALTER TABLE ONLY public.embeddings
-- PostgreSQL database dump complete
--

-- creating a gin index to speed up text search operations
CREATE INDEX idx_text_searchable_column
ON public.documents USING gin (text_searchable_column);


-- trigger to automatically update text_searchable_column
CREATE TRIGGER documents_tsvector_update
BEFORE INSERT OR UPDATE ON public.documents
FOR EACH ROW
EXECUTE FUNCTION tsvector_update_trigger(
text_searchable_column,
'pg_catalog.english',
file_path
);