package engine

import (
    "github.com/huichen/wukong/types"
)

type rankerAddDocRequest struct {
    docId  uint64
    fields interface{}
}

type rankerRankRequest struct {
    docs                []types.IndexedDocument
    options             types.RankOptions
    rankerReturnChannel chan rankerReturnRequest
    countDocsOnly       bool
}

type rankerReturnRequest struct {
    docs    types.ScoredDocuments
    numDocs int
}

type rankerRemoveDocRequest struct {
    docId uint64
}

func (engine *Engine) rankerAddDocWorker(shard int) {
    for {
        request := <-engine.rankerAddDocChannels[shard]
        engine.rankers[shard].AddDoc(request.docId, request.fields)
    }
}

func (engine *Engine) rankerRankWorker(shard int) {
    for {
        request := <-engine.rankerRankChannels[shard]
        if request.options.MaxOutputs != 0 {
            request.options.MaxOutputs += request.options.OutputOffset
        }
        request.options.OutputOffset = 0
        outputDocs, numDocs := engine.rankers[shard].Rank(request.docs, request.options, request.countDocsOnly)
        request.rankerReturnChannel <- rankerReturnRequest{docs: outputDocs, numDocs: numDocs}
    }
}

func (engine *Engine) rankerRemoveDocWorker(shard int) {
    for {
        request := <-engine.rankerRemoveDocChannels[shard]
        engine.rankers[shard].RemoveDoc(request.docId)
    }
}

ranker_worker.go的更多相关文章

  1. wukong引擎源码分析之索引——part 3 文档评分 无非就是将docid对应的fields信息存储起来,为搜索结果rank评分用

    之前的文章分析过,接受索引请求处理的代码在segmenter_worker.go里: func (engine *Engine) segmenterWorker() { for { request : ...

随机推荐

  1. obj-c编程13:归档

    这篇归档内容的博文也挺有趣的,笨猫对好玩的东西一向感兴趣啊!如果用过ruby就会知道,obj-c里的归档类似于ruby中的序列化概念,不过从语法的简洁度来说,我只能又一次呵呵了. 下面大家将会看到2种 ...

  2. 如何oracle调试存储过程

    1.打开PL/SQL Developer 如果在机器上安装了PL/SQL Developer的话,打开PL/SQL Developer界面 输入用户名,密码和host名字,这个跟在程序中web.con ...

  3. Python的lambda

    if else 可以用简单的三元运算符表示 if 1 == 1: name = 'wupeiqi' else: name = 'alex' --> name = 'wupeiqi' if 1 = ...

  4. HashMap 深入分析

    /**     *@author annegu     *@date 2009-12-02     */ Hashmap是一种非常常用的.应用广泛的数据类型,最近研究到相关的内容,就正好复习一下.网上 ...

  5. unity零基础开始学习做游戏(六)背景给我“滚”~

    -------小基原创,转载请给我一个面子 一望无际的...空旷场景,看着实在是难受,不如添加些背景吧.如果要真的想好好设计关卡背景的话,最好是做一个地图编辑器,不过做开发工具毕竟有点点复杂且枯燥,以 ...

  6. php使用http_build_query,parse_url,parse_str创建与解析url详解

    1.http_build_query string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $ ...

  7. MySQL远程链接

    当把本地数据库作为服务器的时候,如果你发现client无法链接到你的数据库服务器,那么有可能是: 1. 当前account没有远程链接权限,如何开通? GRANT ALL PRIVILEGES ON ...

  8. asp.net路径问题

    -------------初级篇---------------------------------------- 在一般的href中路径的引用问题   ./index.aspx与index.aspx都 ...

  9. [CVPR 2017] Semantic Autoencoder for Zero-Shot Learning论文笔记

    http://openaccess.thecvf.com/content_cvpr_2017/papers/Kodirov_Semantic_Autoencoder_for_CVPR_2017_pap ...

  10. 网络营销行业十大看了就想吐的“滥词”

    网络营销行业在国内的互联网界已"猖獗"数年之久,它是一个让企业爱让用户恨的行业.有互联网的地方,就有网络营销的机会,有了机会就有了相关产业的存在,只不过是业大业小的问题.但是随着互 ...