高度可定制的全文搜索引擎 – 悟空

  • 高效索引和搜索(1M条微博500M数据28秒索引完,1.65毫秒搜索响应时间,19K搜索QPS)
  • 支持中文分词(使用sego分词包并发分词,速度27MB/秒)
  • 支持计算关键词在文本中的紧邻距离(token proximity)
  • 支持计算BM25相关度
  • 支持 自定义评分字段和评分规则
  • 支持在线添加、删除索引
  • 支持持久存储
  • 可实现分布式索引和搜索
  • 采用对商业应用友好的Apache License v2发布

微博搜索demo

安装/更新

go get -u -v github.com/huichen/wukong

需要Go版本至少1.1.1

使用

先看一个例子(来自 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"})
    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:"百度中国"}))
}

是不是很简单!

然后看看一个入门教程,教你用不到200行Go代码实现一个微博搜索网站。

其它

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:高度可定制的全文搜索引擎 – 悟空