下载lucene的go版本,应该是支持到lucene4.9版本的 在go的安装目录下打开git的命令窗口输入
go get -u github.com/balzaczyy/golucene
下载完成后就可以使用了
package main import ( "fmt" std "github.com/balzaczyy/golucene/analysis/standard" _ "github.com/balzaczyy/golucene/core/codec/lucene410" "github.com/balzaczyy/golucene/core/document" "github.com/balzaczyy/golucene/core/index" "github.com/balzaczyy/golucene/core/search" "github.com/balzaczyy/golucene/core/store" "github.com/balzaczyy/golucene/core/util" "os" "log" "strings" "github.com/balzaczyy/golucene/core/analysis/tokenattributes" ) func main() { util.SetDefaultInfoStream(util.NewPrintStreamInfoStream(os.Stdout)) index.DefaultSimilarity = func() index.Similarity { return search.NewDefaultSimilarity()//评分器 } 生成索引 : directory, _ := store.OpenFSDirectory("D://test_index")//创建索引的目录 analyzer := std.NewStandardAnalyzer()//使用标准分词器,貌似只有这一个分词器其他的没见到 conf := index.NewIndexWriterConfig(util.VERSION_LATEST, analyzer)//Indexwriter的配置器 writer, _ := index.NewIndexWriter(directory, conf)//index writer d := document.NewDocument() //创建doucument d.Add(document.NewTextFieldFromString("text", "今天下雨了", document.STORE_YES))//添加域信息 writer.AddDocument(d.Fields()) defer writer.Close() // ensure index is written //关闭writer
搜索: reader, _ := index.OpenDirectoryReader(directory)//打开reader searcher := search.NewIndexSearcher(reader)//创建searcher q := search.NewTermQuery(index.NewTerm("text", "雨"))//termquery 目前只发现有termquery 和 boolean Query 其他的span profix phrase 这些应该是没有 因为用的term所以是产于分词的分词器是单字切分,所以只用一个雨字来搜索 res, _ := searcher.Search(q, nil, 1000)//result search 中传入query filter 和返回的条数 fmt.Printf("Found %v hit(s).\n", res.TotalHits) for _, hit := range res.ScoreDocs { fmt.Printf("Doc %v score: %v\n", hit.Doc, hit.Score) doc, _ := reader.Document(hit.Doc) fmt.Printf("text -> %v\n", doc.Get("text")) } }
lucene 的go版本功能没有java版的全,只提供基础的搜索,可能是开源出来的东西太少了