gosearch icon indicating copy to clipboard operation
gosearch copied to clipboard

In-memory, full-text search engine built in Go. For no particular reason.

GoSearch

Motivation

I just wanted to learn how to write a search engine from scratch without any prior experience.

Features

  • [x] Index content
  • [x] Search content
  • [x] Index content REST API
  • [x] Search content REST API
  • [x] Delete content
  • [x] Delete content REST API
  • [X] Update content
  • [X] Update content REST API

REST API

Index a new document:
curl -X POST http://localhost:8080/v1/insert -d "{\"content\": \"lorem ipsum\"}"

Search through all documents:
curl -X GET http://localhost:8080/v1/search?q=lorem

Golang API

First install the package via Go Mod:

go get github.com/micheleriva/gosearch

Then you can use its native Golang APIs to index and search for documents:

package main

import (
	"fmt"
	"github.com/micheleriva/gosearch"
)

func main() {
  gosearch.IndexDocument("Love is old, love is new, love is all, love is you")
  gosearch.IndexDocument("What is love? Baby don't hurt me, no more.")
  
  results := gosearch.Search("love")
  fmt.Println(results)
  // => ["Love is old, love is new, love is all, love is you", "What is love? Baby don't hurt me, no more."]
}

License

gosearch is licensed under the MIT license, but seriosuly, don't use it. Or do it at your own risk.