Add support for retrieval of snippet matches.
This commit is contained in:
parent
41c02acaca
commit
cd30f9b9c9
4 changed files with 69 additions and 5 deletions
|
@ -12,4 +12,4 @@ cd ../../_gen/notes/
|
|||
|
||||
set -x
|
||||
|
||||
exec docker run -it --rm -p $PORT:80 -e PORT=80 -e DB_PATH=/db.sqlite3 -v `pwd`/db.sqlite3:/db.sqlite3:ro search-server
|
||||
exec docker run -it --rm -p $PORT:80 -e SNIPPET_SIZE=128 -e PORT=80 -e DB_PATH=/db.sqlite3 -v `pwd`/db.sqlite3:/db.sqlite3:ro search-server
|
||||
|
|
|
@ -33,6 +33,22 @@ func main() {
|
|||
port = port_num
|
||||
}
|
||||
|
||||
snippet_size := 128
|
||||
snippet_size_str, ok := os.LookupEnv("SNIPPET_SIZE")
|
||||
if ok {
|
||||
snippet_size_num, err := strconv.Atoi(snippet_size_str)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
if (snippet_size_num < 64) {
|
||||
log.Fatal("Environment variale $SNIPPET_SIZE must be >= 64.")
|
||||
os.Exit(1)
|
||||
}
|
||||
snippet_size = snippet_size_num
|
||||
}
|
||||
|
||||
db, err := sql.Open("sqlite3", database_path)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
@ -64,7 +80,7 @@ func main() {
|
|||
|
||||
query := c.Query("q")
|
||||
|
||||
stm, err := db.Prepare("SELECT note_id, title, top_level_title, is_done, is_todo FROM note_search(?)")
|
||||
stm, err := db.Prepare("SELECT note_id, highlight(note_search, 1, '<span class=\"match\">', '</span>'), top_level_title, is_done, is_todo, snippet(note_search, 2, '<span class=\"match\">', '</span>', '<span class=\"search-result-break\"></span>', ?) FROM note_search(?)")
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
@ -77,7 +93,7 @@ func main() {
|
|||
|
||||
results := make([]map[string]string, 0)
|
||||
|
||||
rows, err := stm.Query(query)
|
||||
rows, err := stm.Query(snippet_size, query)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
c.JSON(500, gin.H{
|
||||
|
@ -93,6 +109,7 @@ func main() {
|
|||
var note_top_level_title string
|
||||
var note_is_done string
|
||||
var note_is_todo string
|
||||
var note_highlight string
|
||||
|
||||
err = rows.Scan(
|
||||
¬e_id,
|
||||
|
@ -100,6 +117,7 @@ func main() {
|
|||
¬e_top_level_title,
|
||||
¬e_is_done,
|
||||
¬e_is_todo,
|
||||
¬e_highlight,
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
@ -116,6 +134,7 @@ func main() {
|
|||
item["top_level_title"] = note_top_level_title
|
||||
item["is_done"] = note_is_done
|
||||
item["is_todo"] = note_is_todo
|
||||
item["highlight"] = note_highlight
|
||||
results = append(results, item)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue