Middle — Middle+
What methods or tools have you implemented for full-text search in a project?
sobes.tech AI
Answer from AI
For implementing full-text search in Go projects, the following methods and tools are usually used:
-
Built-in libraries and packages:
bleve— a popular library for full-text search in Go, supporting indexing, ranked search, and filtering.go-elasticsearch— a client for interacting with Elasticsearch, if an external search engine is used.
-
External search engines:
- Elasticsearch — a powerful distributed search engine, often used with Go via REST API or client libraries.
- Meilisearch — a lightweight and fast search engine with a simple API.
-
Example of using Bleve:
import (
"github.com/blevesearch/bleve"
"log"
)
func main() {
indexMapping := bleve.NewIndexMapping()
index, err := bleve.New("example.bleve", indexMapping)
if err != nil {
log.Fatal(err)
}
data := struct {
ID string
Body string
}{ID: "1", Body: "Sample text for search"}
index.Index(data.ID, data)
query := bleve.NewMatchQuery("search")
searchRequest := bleve.NewSearchRequest(query)
searchResult, err := index.Search(searchRequest)
if err != nil {
log.Fatal(err)
}
log.Println(searchResult)
}
Thus, the choice of tool depends on the project requirements: simplicity and embedability (bleve) or scalability and functionality (Elasticsearch).