searchhut/cmd/sh-search/main.go

47 lines
769 B
Go
Raw Normal View History

2022-07-08 20:04:37 +02:00
package main
import (
"database/sql"
"log"
"os"
_ "github.com/lib/pq"
)
func main() {
connstr := os.Args[1]
query := os.Args[2]
db, err := sql.Open("postgres", connstr)
if err != nil {
log.Fatal(err)
}
// TODO: Avoid parsing the query vector twice
rows, err := db.Query(`
SELECT
title,
url,
ts_rank_cd(fts_vector, websearch_to_tsquery('english', $1), 32) AS rank
FROM page
WHERE
title IS NOT NULL AND
websearch_to_tsquery('english', $1) @@ fts_vector
ORDER BY rank DESC
LIMIT 10;
`, query)
if err != nil {
log.Fatal(err)
}
for rows.Next() {
var (
title string
url string
rank float64
)
if err := rows.Scan(&title, &url, &rank); err != nil {
log.Fatal(err)
}
log.Printf("%s: %s", url, title)
}
}