200G巨型文本搜索(无限不循环数文本文件遍历搜索)

小忙儿 2015-04-04 04:47:40
看标题可能比较别扭,容我细细道来:

1、原始数据是文本文件,内容是出数字,不分行,无空格,大小在100m到1G之间;
2、这样的文本文件有很多个,目前总大小超过200G,这些文件不做修改,但会随时间增加新文件;
3、需要从这些文本文件中使用关键字搜索出所有的匹配结果,并摘录前后N个数字,关键字的长度在K以内,N和K要每次搜索前才能确定,但都不至于太大,暂定不会超过30。

场景一、
π 是一个无线不循环小数,把它分割作为文本存做文件存储起来,每个文件100M,分割部分的连续性暂不考虑,能得到大量的这种文件,好,凑200G。

如果,我要在这200G文本中搜索 0123456789这样数字连续出现的情况,需要知道是从第几位开始,前后和后面各20个数字又是什么?或者说9876543210这样的顺序?又或者31415926这样的序列?

场景二、
人类基因组计划大家应该听说过的。人类有23对染色体,每对染色体都包含海量的信息。而染色体中基本的碱基有四种(据传碱基种类已经达到8种,但其他几种并不在DNA中稳定存在,要么是这四种的衍生物,要么只存在于RAN),假设分别用C、G、T、A来表示,加上未知的情况用N来表示,只需要5个字符的序列就能把一条染色体上的碱基序列存储起来,然后,这个文件作为文本,内容可以认为是随机的。

每个染色体一个文件,一个人有23个文件。如果我们找100个人,把这些人的DAN全部测序并记录为文本文件,凑200G。
问题,如果需要判断某段序列是否存在于这100个人的DNA,如果存在那这段序列的前后20个碱基又是什么·?

问题:
1、这种需求,用文本文件存储搜索时遍历好吗?
2、用全文搜索,建立索引,好使吗?
3、速度要快,有没有什么好思路?



问题描述完毕,欢迎各路高人讨论,谢谢。
...全文
2108 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小忙儿 2017-12-27
  • 打赏
  • 举报
回复
时隔多年,再顶~
小忙儿 2017-05-22
  • 打赏
  • 举报
回复
目前的方式就是文本搜索。一直再找更好的办法。 对于特定内容,可以考虑压缩,比如说,纯数字,只有10种情况,DNA五种情况,存为文本的时候,占用的字节数是有很大冗余的。 但文本读取比较方便,就算是二进制流,读取也是按字节,如果不使用8,16,32,64位的读取,还会存在一个类似 4K对齐 的问题。 最主要就是自己技术底子不行,微软封装又太好用,失去了开发的本质追求。
小忙儿 2017-05-22
  • 打赏
  • 举报
回复
这么说,遍历是唯一选择?数据量太大,每次搜索的关键字还不一样,没有更好的办法吗?
yangsongxuan 2017-01-04
  • 打赏
  • 举报
回复
这种场景跟一般的全文检索的场景不太一样 你所描述的场景里面, 分词是一个很大的问题, 对于一串连续的数字来说, 比如, 0123456789, 可以分成, 0, 01, 12, 23, 34,... 012, 123, 234, 345, 456, ... , 01234, 12345 .... 如果是一串很长的数字来说, 分出来的词几乎是无限的, 如果是做全文检索建索引的话,索引量会非常大, 感觉不可行
  • 打赏
  • 举报
回复
大神有没有解决呀,很好的想法
小忙儿 2015-04-11
  • 打赏
  • 举报
回复
没人搭理?自己顶一下~

2,760

社区成员

发帖
与我相关
我的任务
社区描述
搜索引擎的服务器通过网络搜索软件或网络登录等方式,将Internet上大量网站的页面信息收集到本地,经过加工处理建立信息数据库和索引数据库。
社区管理员
  • 搜索引擎技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧