在网上下到2000w的csv,基于文本的搜索最快的的方式就是grep了吧。
1.那么如果 grep 'foo|bar' finename.txt 是否相当于先做一遍grep foo,再做一遍grep bar?
对大文件搜索才体会到了性能问题。
2.google的秒搜是基于一种什么思想呢?
http://v2ex.com/t/65589 这里提到
===========
我提供一个思路给你,在索引里面,定长数据查询效率要远远高于不定长数据,url是不定长数据,但是可以转变成为定长,如果散列足够随机,冲突不大的话,那么可以考虑,比如:
把url转换成为long值,hash(url) -> id
long值的范围是 2^64,说实话,我不认为你能达到产生冲突的可能性
然后做非uniq索引,在每次查询结果列表里面做遍历,在冲突小的情况下,每次基本返回一条数据。
如果你的数据量很小,允许一定误差,那就根本不考虑冲突的情况。
这其实就是hash的基本思想。
===========
hash都定长的话,就不需要通过诸如Knuth–Morris–Pratt algorithm的算法来匹配吗?
已读了
http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.htmlhttp://en.wikipedia.org/wiki/String_searching_algorithm
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/85805
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.