悟空(wukong)搜索引擎源代码阅读(待续)

本文介绍了悟空搜索引擎的源代码阅读过程,详细解析了初始化、文档索引、搜索流程,涉及分词器、索引器和排序器的工作原理。通过分析各个组件的通道和请求类型,展示了搜索引擎的基本操作。
摘要由CSDN通过智能技术生成

悟空(wukong)搜索引擎源代码阅读

最近为了了解搜索引擎的一些知识,阅读了wukong搜索的一些源码,在这里记录一下。项目地址在这里

整个的处理流程如下:

wukong-framework

在项目中主要有一下几个目录:

目录名 作用
core
data
docs
engines
examples
testdata
Types
utils

示例代码如下:

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: "./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结构体
    res := searcher.Search(types.SearchRequest{Text:"百度中国"})
    log.Printf("num=%d ", res.NumDocs)
    for _, d := range res.Docs {
        log.Printf("docId=%d", d.DocId)
        log.Print("\tscore:", d.Scores)
        log.Print("\tTokenLocations:", d.TokenLocations)
        log.Print("\tTokenSnipp
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值