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

悟空(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
    评论
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
以下是一个简单的王者荣耀中孙悟空的底层代码示例,其中包括了基本属性和方法的定义: ```python class SunWukong: def __init__(self, name, hp, damage, defense): self.name = name self.hp = hp self.damage = damage self.defense = defense def attack(self, enemy): damage = self.damage - enemy.defense if damage > 0: enemy.hp -= damage print(f"{self.name}对{enemy.name}造成了{damage}点伤害") else: print(f"{self.name}的攻击被{enemy.name}防御了") def use_skill(self, enemy): damage = self.damage * 2 - enemy.defense if damage > 0: enemy.hp -= damage print(f"{self.name}使用技能对{enemy.name}造成了{damage}点伤害") else: print(f"{self.name}的技能被{enemy.name}防御了") def use_ultimate(self, enemy): damage = self.damage * 3 - enemy.defense if damage > 0: enemy.hp -= damage print(f"{self.name}使用大招对{enemy.name}造成了{damage}点伤害") else: print(f"{self.name}的大招被{enemy.name}防御了") ``` 在代码中,我们定义了一个`SunWukong`类,其中`__init__()`方法用来初始化孙悟空的基本属性,包括`name`(名称)、`hp`(血量)、`damage`(攻击力)和`defense`(防御力)。`attack()`、`use_skill()`和`use_ultimate()`方法分别对应孙悟空的普通攻击、技能和大招,其中计算伤害时需要减去敌方角色的防御力。 使用该类可以创建一个孙悟空对象,并调用相应的方法来进行攻击、使用技能和大招等操作,例如: ```python # 创建孙悟空和敌人对象 sun_wukong = SunWukong("孙悟空", 1000, 100, 50) enemy = SunWukong("敌人", 800, 80, 30) # 孙悟空使用技能攻击敌人 sun_wukong.use_skill(enemy) # 输出敌人剩余血量 print(f"{enemy.name}剩余血量:{enemy.hp}") ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值