概要

联通最近开源的万悟作为央企首个开源的智能体开发平台,支持多租户、license友好并且基于golang开发。本文基于源码分析平台关于文档搜索的实现思路。

项目源码地址:
链接

文档中心实现效果

在这里插入图片描述

Riot概要

Riot 搜索引擎开源库链接

特性

Riot使用

先看一个搜索引擎例子(来自 simplest_example.go

package main

import (
	"log"

	"github.com/go-ego/riot"
	"github.com/go-ego/riot/types"
)

var (
	// searcher 是协程安全的
	searcher = riot.Engine{}
)

func main() {
	// 初始化
	searcher.Init(types.EngineOpts{
		Using:             3,
		GseDict: "zh",
		// GseDict: "your gopath"+"/src/github.com/go-ego/riot/data/dict/dictionary.txt",
	})
	defer searcher.Close()

	text := "《复仇者联盟3:无限战争》是全片使用IMAX摄影机拍摄"
	text1 := "在IMAX影院放映时"
	text2 := "全片以上下扩展至IMAX 1.9:1的宽高比来呈现"
	
	// 将文档加入索引,docId 从1开始
	searcher.Index("1", types.DocData{Content: text})
	searcher.Index("2", types.DocData{Content: text1}, false)
	searcher.Index("3", types.DocData{Content: text2}, true)

	// 等待索引刷新完毕
	searcher.Flush()
	// engine.FlushIndex()

	// 搜索输出格式见 types.SearchResp 结构体
	log.Print(searcher.Search(types.SearchReq{Text:"复仇者"}))
}

文档中心整体功能设计

需求:md文档目录生成以及md转html以后端处理为主

  • 为了方便后续迭代文档需要把md文档内容整体展示,目录与md文档目录对齐 。

  • md内容是前端渲染,所以后端只需要返回文档内容(对图片链接需要特殊处理)。

  • 文档搜索实现(内置搜索引擎需要实现一个内存级的文本搜索引擎)。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐