一个简单的全文搜索引擎

前几个星期,刚好有一个关于FAQ的需求,包含了搜索FAQ内容的需求,而在这之前在微信公众号的一片文章中提到了倒排索引的知识,感觉眼前一亮,于是就自己写了一个全文搜索引擎,目前只是实现了一些简单的功能;

索引的存储分为两级,第一级是在内存中的倒排索引,第二级是把倒排索引存放到MySQL中,在添加,修改和删除索引的同时也对MySQL中的数据进行操作,在搜索引擎启动时重建索引的过程只是从数据库中读出索引的数据,而不用根据Documents进行重建,加快重建的过程.

感兴趣的朋友可以看看:https://github.com/ThinkpadNC5/SearchEngine.git

WuKong 全文搜索引擎。功能特性:高效索引搜索(1M条微博500M数据28秒索引完,1.65毫秒搜索响应时间,19K搜索QPS)支持中文分词(使用sego分词包并发分词,速度27MB/秒)支持计算关键词在文本中的紧邻距离(token proximity)支持计算BM25相关度支持自定义评分字段和评分规则支持在线添加、删除索引支持持久存储可实现分布式索引搜索采用对商业应用友好的Apache License v2发布示例代码: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()     // 将文档加入索引     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:"百度中国"})) } 标签:WuKongSearch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值