lucene go
1.0.0
中文
Lucene is a search engine library. lucene-go is its Golang version implementation.
The goal of the project has undergone several twists and turns during the development process, encountering far greater difficulties than expected, language differences, and a lack of theoretical knowledge. After a year of development, the following major modules have been gradually completed:
It should be noted that the current project is not perfect! Do not use for any project~
go1.21+
More Example
Using IndexWriter
package main
import (
"context"
"fmt"
"github.com/geange/lucene-go/codecs/simpletext"
"github.com/geange/lucene-go/core/document"
"github.com/geange/lucene-go/core/index"
"github.com/geange/lucene-go/core/search"
"github.com/geange/lucene-go/core/store"
)
func main() {
dir, err := store.NewNIOFSDirectory("data")
if err != nil {
panic(err)
}
codec := simpletext.NewCodec()
similarity, err := search.NewCastBM25Similarity()
config := index.NewIndexWriterConfig(codec, similarity)
writer, err := index.NewIndexWriter(context.Background(), dir, config)
if err != nil {
panic(err)
}
defer func() {
err := writer.Commit(context.Background())
if err != nil {
fmt.Println(err)
}
}()
{
doc := document.NewDocument()
doc.Add(document.NewStoredField[int32]("a", 74))
doc.Add(document.NewStoredField[int32]("a1", 86))
doc.Add(document.NewStoredField[int32]("a2", 1237))
docID, err := writer.AddDocument(context.Background(), doc)
if err != nil {
panic(err)
}
fmt.Println(docID)
}
{
doc := document.NewDocument()
doc.Add(document.NewStoredField[int32]("a", 123))
doc.Add(document.NewStoredField[int32]("a1", 123))
doc.Add(document.NewStoredField[int32]("a2", 789))
docID, err := writer.AddDocument(context.Background(), doc)
if err != nil {
panic(err)
}
fmt.Println(docID)
}
{
doc := document.NewDocument()
doc.Add(document.NewStoredField[int32]("a", 741))
doc.Add(document.NewStoredField[int32]("a1", 861))
doc.Add(document.NewStoredField[int32]("a2", 12137))
docID, err := writer.AddDocument(context.Background(), doc)
if err != nil {
panic(err)
}
fmt.Println(docID)
}
}