
1 evlos 2011-12-23 02:59:05 +08:00 。。。关键字要6位 。。。。我账号才5位。。。。 |
3 vibbow OP 补充说明:不知道由于什么原因,我自己测试往QQ邮箱发信收不到,因此大家尽量用国外的邮箱收信吧。 |
4 vibbow OP 我了个去,发现一个严峻的问题:现在性能瓶颈居然不是硬盘,而是CPU... |
5 vibbow OP 因为修改代码时失误,导致给8位用户(应该都是v2ex的吧)发送了一封垃圾邮件,在此表示抱歉。 |
6 carry 2011-12-23 10:16:16 +08:00 大恩不言谢 创意主很精通搜索吗 |
7 vibbow OP @carry 完全不精通搜索,服务端都是用PHP写的,先全部转小写然后用strstr比较... 要不然效率也不至于这么低了... |
8 vibbow OP 哈,用Process Explorer看了下服务器的运行状况,硬盘今天爽high了~ |
9 vibbow OP |
10 delectate 2011-12-23 18:43:38 +08:00 win的服务器?这么大的数据库,还是grep等给力,既支持正则,速度又快。 |
12 vibbow OP 擦...服务器开始自动备份了...速度瞬间降低... |
13 vibbow OP 怎么优化都是4分钟,应该是到strstr函数的极限了... |
14 delectate 2011-12-23 19:47:31 +08:00 瓶颈。想想顺序读取1g的数据还要很久时间呢。 |
16 delectate 2011-12-23 20:09:19 +08:00 只是那很轻松的,问题是还要匹配。正则的引擎差一点就慢很多。反正不大,都放内存里速度能加倍;或者优化一下数据库,别简单的 cat *> database就拿去用…… |
17 vibbow OP 因为国内的服务器在搜索完成后回调国外的服务器失败(这个时段,你懂的…),所以之前给一些用户发送了可能错误的“搜索结果为空”email。因为我也不确定具体什么时间开始失败的,所以我按照缓存的记录,给之前所有搜索结果为空的用户重新搜索并且发送了邮件。 在此对再次收到我“垃圾邮件”的用户表示抱歉。 |
18 vibbow OP 继续优化了代码,全文搜索时间从4分多钟降到了2分钟,同时添加上了mop的库(虽然感觉这个库很奇怪,很假...) |
19 liruqi 2011-12-24 08:54:56 +08:00 via Android 直接导入到 mongodb 或者 mysql 加索引啊。为啥要自己写查询呢。 |
22 laiwei 2011-12-24 15:40:59 +08:00 你不想搞mysql的话,你搞个sqlite存起来,建个索引,比你这样strstr快多了。 |
23 vibbow OP @laiwei sqlite索引不行啊,如果关键字是从中间开始查那么一点效果都没有啊。目前在缓慢的用mysql给csdn库加全文索引中... |
25 vibbow OP 可是建完全文索引后貌似不能同时查多个关键字了... 不可以用 SELECT * FROM password WHERE keyword LIKE IN ('%keyword1%', '%keyword2%); 或者有其他sql语句可以用? |
26 vibbow OP 好吧,貌似这样来速度也可以: SELECT * FROM password WHERE keyword LIKE '%keyword1%' OR keyword LIKE '%keyword2%'; |
27 liruqi 2011-12-24 16:38:17 +08:00 其实一般自己的id 都能准确记住的,没有必要用 like 做匹配。反而是恶意查询才有这种需求吧。 建议直接用id 做精确匹配。 |
28 vibbow OP @liruqi 就我这服务器速度,再加上还限制了并发数量,想批量恶意查询还不如自己把数据库下下来快... 一般查询,随他们去了。 |
29 vibbow OP 蛋疼了。加上17173的数据,总共有8千多万条数据,我觉得没个两三天是建立不完索引的了... 算了,还是继续文本搜索吧... |
30 delectate 2011-12-24 21:25:07 +08:00 用sed或者awk剔除重复的啊 |