使用Mysql对URL进行索引
来源:互联网 发布:telnet 端口号 结果 编辑:程序博客网 时间:2024/06/07 21:08
在抓取页面的时候,很重要的一点就是要对URL进行索引,避免重复抓取。
开始想了几条路线:
一个是自己做一个索引文件,定义一个bit数组,每一位代表对应的URL是否被抓取过(0或1)。对URL进行Hash或者crc到bit数组的指定位。虽然轻便,但是要自己维护,难免不会出bug。
一个是用Lucene或者Solr,虽然简单,但是有点重量级,感觉大炮打蚊子。
一个是用mysql,对URL进行crc建立索引。最终决定用这个,直观方便也轻便。
首先根据需要建表:
create table url_visit_times ( id int auto_increment, url varchar(255) not null, url_crc int unsigned not null default 0, primary key (id))
其中url_crc是对URL进行一个模拟哈希。
对url_crc建立索引。
再建立相应触发器:
delimiter //create trigger url_crc before insert on url_visit_times for each row beginset new.url_crc = crc32(new.url);end//create trigger url_crc_update before update on url_visit_times for each row beginset new.url_crc = crc32(new.url);end//delimiter ;
触发器的作用是简化操作,在插入数据的时候可以不计算crc,触发器会自动计算并插入。
附上一点触发器相关的知识:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
trigger_time是触发程序的动作时间。它可以是BEFORE或AFTERtrigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:
· INSERT:将新行插入表时激活触发程序,例如,通过INSERT、LOAD DATA和REPLACE语句。
· UPDATE:更改某一行时激活触发程序,例如,通过UPDATE语句。
· DELETE:从表中删除某一行时激活触发程序,例如,通过DELETE和REPLACE语句。
可能遇到的问题:
如果你在触发器里面对刚刚插入的数据进行了 insert/update, 会造成循环的调用.
如:
create trigger test before update on test for each row update test set NEW.updateTime = NOW() where id=NEW.ID; END
应该使用set:
create trigger test before update on test for each row set NEW.updateTime = NOW(); END
触发器 与存储过程
触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL(允许存储程序通过参数将数据返回触发程序)。
而存储过程 可以接受参数,将结果范围给应用程序。
Before与After区别:before:(insert、update)可以对new进行修改。
after不能对new进行修改。
两者都不能修改old数据。
- 使用Mysql对URL进行索引
- 使用MySQL进行全文索引
- MySQL对索引的使用
- 使用正则表达式对URL进行解析
- [MySQL 工具] pt-index-usage使用 --> 对查询中的索引进行分析
- Mysql 笔记--URL索引
- 对mysql使用索引的误解
- 对URL进行编码
- 对url进行转换
- 使用Server.Transfer对URL进行隐藏以及其他
- 使用Server.Transfer对URL进行隐藏以及其他
- 使用UrlRewrite Filter对url进行美化转换处理
- 转使用UrlRewrite Filter对url进行美化转换处理
- 使用@import url()对资源文件进行导入
- Spring使用注解方式对url进行拦截
- 使用MySQLTuner-perl对MySQL进行优化
- 使用VS(C#) 对Mysql 进行操作
- 使用Python程序对MySQL进行操作
- 获取 屏幕大小和 dp 等屏幕参数
- LeetCode—Majority Element
- Oracle 没有查询数据,但是视图中有
- Leetcode -- N_Queens II
- POJ 3349 ——Snowflake Snow Snowflakes 链地址法哈希
- 使用Mysql对URL进行索引
- 微信营销十九招 ! 转载
- 如何从后台开启android蓝牙的可见性以及始终保持可见性
- adb 命令抓取log日志方法
- unity游戏之刀塔传奇山寨版:斥资千万推海外电视广告
- WebService——CXF方式创建WebService服务端
- OpenCV 随机森林使用方法
- el 和jstl
- iOS 中文首字母排序,通讯录排序,好友分组排序