- 高效索引和搜索(10M条微博3.6G数据7分钟索引完,2.5毫秒搜索响应时间,每秒可处理1.6K次请求)
- 支持中文分词(使用sego分词包并发分词,速度13MB/秒)
- 支持计算关键词在文本中的紧邻距离(token proximity)
- 支持计算BM25相关度
- 支持自定义评分字段和评分规则
- 支持在线添加、删除索引
- 可实现分布式索引和搜索
- 采用对商业应用友好的Apache License v2发布
微博搜索演示 http://soooweibo.com
先安装依赖包
go get -u github.com/huichen/sego
go get -u github.com/huichen/murmur
然后安装悟空引擎
go get -u github.com/huichen/wukong
先看一个例子(来自examples/simplest_example.go)
package main
import (
"github.com/huichen/wukong/engine"
"github.com/huichen/wukong/types"
"log"
)
var (
// searcher是协程安全的
searcher = engine.Engine{}
)
func main() {
// 初始化
searcher.Init(types.EngineInitOptions{
SegmenterDictionaries: "github.com/huichen/wukong/data/dictionary.txt"})
// 将文档加入索引
searcher.IndexDocument(0, types.DocumentIndexData{Content: "此次百度收购将成中国互联网最大并购"})
searcher.IndexDocument(1, types.DocumentIndexData{Content: "百度宣布拟全资收购91无线业务"})
searcher.IndexDocument(2, types.DocumentIndexData{Content: "百度是中国最大的搜索引擎"})
// 等待索引刷新完毕
searcher.FlushIndex()
// 搜索输出格式见types.SearchResponse结构体
log.Print(searcher.Search(types.SearchRequest{Text:"百度中国"}))
}
是不是很简单!
然后看看一个入门教程,教你用不到200行Go代码实现一个微博搜索网站。