wukongd ======== wukongd 是基于 [wukong](https://github.com/huichen/wukong) 的搜索引擎。作为独立的服务进程运行 * 文档 Id (docId) 由 uint64 改为 string 类型。 * 增加 REST RPC 接口。 * 增加 wukongd.conf 配置文件 (toml 格式)。 > 如果需要使用 wukong 的代码, 可以直接导航到其 github repo, 或 checkout orig 分支. wukongd REST API ================ - POST http://host:port/v1/index 添加索引 参数 ```json { "docId":"db:table:column:1", "content":"我爱这个世界", "forceUpdate":false } ``` - POST http://host:port/v1/delete_index 删除索引 - DELETE http://host:port/v1/index 删除索引 参数 ```json { "docId":"db:table:column:1" } ``` - GET http://host:port/v1/search?keywords=xxx 搜索 返回 见 SearchResponse 结构体定义 wukongd 启动参数 ================ -c 指定配置文件 -t 测试配置文件 -v 打印版本 -h wukongd TODO ============ 增加 API - shutdown - stat - if index exists already TODO ===== * 定义配置文件内容 * 定义 API 协议 悟空全文搜索引擎 ====== * [高效索引和搜索](/docs/benchmarking.md)(1M条微博500M数据28秒索引完,1.65毫秒搜索响应时间,19K搜索QPS) * 支持中文分词(使用[sego分词包](https://github.com/huichen/sego)并发分词,速度27MB/秒) * 支持计算关键词在文本中的[紧邻距离](/docs/token_proximity.md)(token proximity) * 支持计算[BM25相关度](/docs/bm25.md) * 支持[自定义评分字段和评分规则](/docs/custom_scoring_criteria.md) * 支持[在线添加、删除索引](/docs/realtime_indexing.md) * 支持[持久存储](/docs/persistent_storage.md) * 可实现[分布式索引和搜索](/docs/distributed_indexing_and_search.md) * 采用对商业应用友好的[Apache License v2](/license.txt)发布 [微博搜索demo](http://vhaa7.fmt.tifan.net:8080/) # 安装/更新 ``` go get -u -v github.com/huichen/wukong ``` 需要Go版本至少1.1.1 # 使用 先看一个例子(来自[examples/simplest_example.go](/examples/simplest_example.go)) ```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"}) defer searcher.Close() // 将文档加入索引,docId 从1开始 searcher.IndexDocument(1, types.DocumentIndexData{Content: "此次百度收购将成中国互联网最大并购"}, false) searcher.IndexDocument(2, types.DocumentIndexData{Content: "百度宣布拟全资收购91无线业务"}, false) searcher.IndexDocument(3, types.DocumentIndexData{Content: "百度是中国最大的搜索引擎"}, false) // 等待索引刷新完毕 searcher.FlushIndex() // 搜索输出格式见types.SearchResponse结构体 log.Print(searcher.Search(types.SearchRequest{Text:"百度中国"})) } ``` 是不是很简单! 然后看看一个[入门教程](/docs/codelab.md),教你用不到200行Go代码实现一个微博搜索网站。 # 其它 * [为什么要有悟空引擎](/docs/why_wukong.md) * [联系方式](/docs/feedback.md)