searcher.IndexDocument(0, types.DocumentIndexData{Content: "此次百度收购将成中国互联网最大并购"}) engine.go中的源码实现: // 将文档加入索引 // // 输入参数: // docId 标识文档编号,必须唯一 // data 见DocumentIndexData注释 // // 注意: // 1. 这个函数是线程安全的,请尽可能并发调用以提高索引速度 // 2. 这个函数调用是非同步的,也就是说在函数返回时有可能…
前面说过,接收indexerRequest的代码在index_worker.go里: func (engine *Engine) indexerAddDocumentWorker(shard int) { for { request := <-engine.indexerAddDocumentChannels[shard] //关键 addInvertedIndex := engine.indexers[shard].AddDocument(request.document, request.d…
之前的文章分析过,接受索引请求处理的代码在segmenter_worker.go里: func (engine *Engine) segmenterWorker() { for { request := <-engine.segmenterChannel //关键 tokensMap := make(map[string][]int) numTokens := 0 if !engine.initOptions.NotUsingSegmenter && request.data.Con…
searcher.Search(types.SearchRequest{Text: "百度中国"}) // 查找满足搜索条件的文档,此函数线程安全 func (engine *Engine) Search(request types.SearchRequest) (output types.SearchResponse) { if !engine.initialized { log.Fatal("必须先初始化引擎") } var rankOptions types.…
http://jerryshao.me/categories.html#architecture-ref http://blog.csdn.net/pelick/article/details/17222873 如果想了解Spark的设计, 第一个足够 如果想梳理Spark的源码整体结构, 第二个也可以  ALL Spark源码分析 – SparkContext Spark源码分析 – SparkEnv  Spark 源码分析 -- task实际执行过程   DAGScheduler Spark…
例子: package main import ( "fmt" "github.com/blevesearch/bleve" ) func main() { // open a new index mapping := bleve.NewIndexMapping() index, err := bleve.New("example.bleve", mapping) if err != nil { fmt.Println(err) return }…
接下来看看下面index部分的源码实现: data := struct { Name string Des string }{ Name: "hello world this is bone", Des: "this is a good time", } // index some data index.Index("id", data) 其中, index.Index("id", data) 实现代码: // Index a…
目录(?)[-] 主要技术特性 引擎概览 Irrlicht的窗口管理   Irrlicht引擎主要是由一个名叫Nikolaus Gebhardt奥地利人所设计,是sourceforge上的一个开源项目. Irrlicht是一个德国神话故事中的一种动物的名字,它能够发光和飞翔,可以在大部分的沼泽地附近发现它.单词"Irrlicht"是两个德国单词("irr"意思是疯狂的:而"Licht"意思是光)的组合.在英语中,它被译为"鬼火"…
Lua 提供了一个 注册表, 这是一个预定义出来的表, 可以用来保存任何 C 代码想保存的 Lua 值. 这个表可以用有效伪索引 LUA_REGISTRYINDEX 来定位. 任何 C 库都可以在这张表里保存数据, 为了防止冲突,你需要特别小心的选择键名. 一般的用法是,你可以用一个包含你的库名的字符串做为键名, 或者取你自己 C 对象的地址,以轻量用户数据的形式做键, 还可以用你的代码创建出来的任意 Lua 对象做键. 关于变量名,字符串键名中以下划线加大写字母的名字被 Lua 保留. 注册表…
上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayList有个整体认识,再学习它的源码,最后再通过例子来学习如何使用它.内容包括: ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess…