diff --git a/cmd/createEmbeddings.go b/cmd/createEmbeddings.go index 123ab1b..7833b5e 100644 --- a/cmd/createEmbeddings.go +++ b/cmd/createEmbeddings.go @@ -25,7 +25,7 @@ var createEmbeddingsCmd = &cobra.Command{ } res, err := db.Exec(`INSERT INTO bookmark_embeddings (document_id, embedding) - SELECT b.id, embed('embeddinggemma', concat_ws(' ', 'title: ', b.title, ' | text: ', b.description, b.tags, justPath(b.url))) + SELECT b.id, embed('embeddinggemma', concat_ws(' ', 'title: ', b.title, ' | text: ', b.description, b.tags, b.url)) FROM Bookmarks b WHERE NOT EXISTS ( SELECT 1 FROM bookmark_embeddings be WHERE be.document_id = b.id @@ -34,7 +34,7 @@ var createEmbeddingsCmd = &cobra.Command{ log.Fatalln(err.Error()) } rows, _ := res.RowsAffected() - fmt.Sprintf("Successfully did %s rows\n", rows) + fmt.Printf("Successfully did %s rows\n", rows) }, } diff --git a/cmd/sql.go b/cmd/sql.go index 618caa9..da0b9ee 100644 --- a/cmd/sql.go +++ b/cmd/sql.go @@ -92,7 +92,7 @@ var sqlCmd = &cobra.Command{ if input == ".tables" { query = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;" } else if input == ".schema" { - query = "SELECT sql FROM sqlite_master WHERE type='table' ORDER BY name;" + query = "SELECT sql FROM sqlite_master WHERE type IN ('table', 'trigger') ORDER BY name;" } else if s, ok := strings.CutPrefix(input, ".web-search"); ok { results, err := search.Search(db, s) if err != nil { @@ -111,19 +111,19 @@ var sqlCmd = &cobra.Command{ continue } - renderSemanticResults(results) + renderSearchBookmarks(results) query = "" continue - } else if search, ok := strings.CutPrefix(input, ".search "); ok { - fmt.Printf("search: '%s'\n", search) - rows, err := db.Query("SELECT * FROM Bookmarks_fts WHERE Bookmarks_fts MATCH ?;", search) + } else if s, ok := strings.CutPrefix(input, ".search "); ok { + fmt.Printf("search: '%s'\n", s) + results, err := search.FullText5(db, s) if err != nil { fmt.Println("err: " + err.Error()) continue } - renderResults(rows) + + renderSearchBookmarks(results) query = "" - rows.Close() continue } else { // Append to current query if it doesn't end with semicolon @@ -247,7 +247,7 @@ func renderResults(rows *sql.Rows) { fmt.Printf("Query executed successfully. %d row(s) returned.\n", rowCount) } -func renderSemanticResults(bookmarks []search.Bookmark) { +func renderSearchBookmarks(bookmarks []search.Bookmark) { if bookmarks == nil { return } diff --git a/store/database.go b/store/database.go index 54161ac..6b39fea 100644 --- a/store/database.go +++ b/store/database.go @@ -117,7 +117,7 @@ END;`, definition: `CREATE TRIGGER IF NOT EXISTS Bookmarks_embeddings_insert AFTER INSERT ON Bookmarks BEGIN INSERT INTO bookmark_embeddings (document_id, embedding) - VALUES (new.id, embed('embeddinggemma', concat_ws(' ', 'title: ', new.title, ' | text: ', new.description, new.tags, justPath(new.url)))); + VALUES (new.id, embed('embeddinggemma', concat_ws(' ', 'title: ', new.title, ' | text: ', new.description, new.tags, new.url))); END;`, flags: []Flag{Embedding}, }, @@ -127,7 +127,7 @@ END;`, BEGIN DELETE FROM bookmark_embeddings WHERE document_id = old.id; INSERT INTO bookmark_embeddings (document_id, embedding) - VALUES (new.id, embed('embeddinggemma', concat_ws(' ', 'title: ', new.title, ' | text: ', new.description, new.tags, justPath(new.url)))); + VALUES (new.id, embed('embeddinggemma', concat_ws(' ', 'title: ', new.title, ' | text: ', new.description, new.tags, new.url))); END;`, flags: []Flag{Embedding}, },