Comments (23)
索引表放在内存中是为了方便查询,如果放在数据库会慢很多,你确定这是你想要的?
from wukong.
服务器内存太小,我目前考虑是改用Goleveldb来存索引表,应该属于可以接受的范围内。
from wukong.
确实,我现在已经把悟空用到项目中了,不过做了很大的改动,其中就有core中对接数据库的改造,直接存储反向索引文档,节约内存,也节约初始化时间。
from wukong.
@henrylee2cn 能否告知修改的思路?大概哪些地方做了怎么的修改?
from wukong.
创建两个公共变量,一个反向索引列表的,一个文档评分字段的,在索引器、排序器初始化时,将指针赋给对应字段,大致是这个思路,当然原来的持久化存储那一套要全部去掉。
from wukong.
@henrylee2cn 哦,也就是修改后原有的持久存储部分就废了,明白~
from wukong.
@henrylee2cn https://github.com/henrylee2cn/wukong 好像没有看到存储到数据库的部分.
from wukong.
嗯,因为我把悟空写进了我这边的一个核心架构中,涉及一小部分业务方面的东西,不能独立使用,所以就没更上去
from wukong.
今天我根据作者的最新源码,改个较完美版本,提交上来吧
from wukong.
@henrylee2cn 期待!
from wukong.
https://github.com/henrylee2cn/wukong
这个版本是在官方最新源码基础上改进的:
- 持久化存储对象,从原始文档改为反向索引文档与文档评分字段,从而避免程序重启后,需要重新分词、索引的麻烦;
- 将持久数据库分片数与索引器、排序器的分片数保持一致,即实现一一对应关系,从而保证从数据库可以完美恢复;
- 依然存在的问题:悟空采用的这两中KV数据库,读写速率太慢,严重拖累高并发的特性。
from wukong.
@henrylee2cn 第三个问题我建议用goleveldb,读写都很快,之前我就是用这个替换原来的两种数据库。
from wukong.
@henrylee2cn 我提交了Goleveldb存储的支持代码,因为并发协程的关系,分片越多,读写就越快,我分了64片,每分钟基本1万数据左右。
from wukong.
@insionng 没有找到你提交的代码啊?
from wukong.
@insionng 急用啊,兄弟,哪里有你改的代码?那个存储分片的问题,我可以优化的。
from wukong.
@henrylee2cn andeya#1 https://github.com/henrylee2cn/wukong/pull/1/commits 我提交到这里了,须要合并一下~
使用的时候设一下 os.Setenv("WUKONG_STORAGE_ENGINE", "ldb") 就可以了~
from wukong.
@henrylee2cn 数据持续增加中,内存快爆了...索引表改存数据库改得怎样呢?期待不需要占用太多内存的版本,慢点是可以接受的.
from wukong.
@insionng
@henrylee2cn
搞得怎么样了你们
from wukong.
@boojoo-exp 单纯的sego分词效果其实不好,所以还是需要wukong做索引。我现在也在等 @henrylee2cn 的消息。
from wukong.
@henrylee2cn 你基于wukong做的改进是放在你的代码库还是已经merge到了wukong了。
from wukong.
因为索引很大,所以我将索引内容放到了文件中持久化,但是没次搜索启动载入的时候很耗时间,这里我不知道Lucene是如何做的,lucene就很快。
from wukong.
@csrgxtu wukong 最初是作为 无状态微服务 的核心搜索模块来设计的,全量数据保存在内存中,不做持久化存储,可以随时重启服务,并主要从网络数据库中更新全量和增量数据,建索引的瓶颈主要在网络 IO 的 latency。lucene 的优化方向并不是 wukong 的初衷。
from wukong.
有没有支持多级索引的计划
from wukong.
Related Issues (20)
- 关于demo占用大量内存的疑问 HOT 1
- wukong engine adds many extra cmdline flags to the packages that imports wukong engine
- 评分规则必须要在建索引的时候指定么? HOT 1
- Demo挂了???
- timeout的bug
- 是不是还不支持Go 1.8? HOT 2
- 能否查询所有已经建立索引的词条呢
- why same as wukong HOT 1
- Demo打不开, 请修复下 HOT 3
- 请教关于索引创建时的效率问题
- 能否动态更新索引呢? HOT 1
- 动态处理数据
- 116万条数据 内存占用1.5G
- 添加docment时二分查找返回处理
- 爬取微博内容的不灵了啊?
- 请问项目还在维护吗 HOT 1
- go的异步不适合做密集运算,全文检索在语言选择上不应该选go吧。
- 这个代码与riot有什么关系 ? HOT 3
- 引擎是否有商用化的案例呀? HOT 1
- 请问是否可以支持 UUID 作为 docId ?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wukong.