搜索技术-对于一个搜索引擎,如何实时监测网页的更新并且快速更新索引?
请问对于一个搜索引擎,如何实时监测网页的更新?
对于新抓取下来的网页,如何快速更新索引,同时更新时不影响搜索服务?
我现在用的nutch来做搜索引擎,采用Lucene建立索引。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
请问对于一个搜索引擎,如何实时监测网页的更新?
对于新抓取下来的网页,如何快速更新索引,同时更新时不影响搜索服务?
我现在用的nutch来做搜索引擎,采用Lucene建立索引。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
请问对于一个搜索引擎,如何实时监测网页的更新?
对于新抓取下来的网页,如何快速更新索引,同时更新时不影响搜索服务?
我现在用的nutch来做搜索引擎,采用Lucene建立索引。
实时监测。。。。你需要实时去监控你的页面,这得要求 网站用你提供的接口主动告诉你“我在XXX时候进行了更新”
另一个就是 你有足够多的爬虫,足够多的服务器,时刻去抓取网页,这样可以增加你发现网页更新机率,
判断网页是己更新你可以参数 :通过获取http头信息,检查Last-Modified, Content-Length更上次抓取是记录对比判断是否要进行重新抓取
索引的更新你可以用Lucene 的
indexWriter.deleteDocuments(new Term("fileName"));//先删除 一个,然后再
Field fileName = new Field("fileName", root.getName(), Store.YES, Index.ANALYZED);
document.add(fileName); //然后再添加一个。
这样就完成更新了
实时监测。。。。 困难点吧
不过可以设置优先级,对于质量高的网站周期短一些。
质量高有两种:
1是白名单,比如新浪、网易等知名网站。
2是统计指向这个网站的链接数的多少(难点在于防作弊)
目前就想到这两点
不可能实时监测的,除非:
1. 网站是你自己的,比如百度贴吧
2. 网站用你提供的接口主动告诉你“我在XXX时候进行了更新”
至于更新索引,技术就多了。
比如有两套索引,一套前台服务一套后台更新,更新完之后切换(对分布式系统来说可能就是改一下DNS);也可以每个最小单元的地方都是这样可更新的结构。很多数据库自己就是支持Transact的,也就不用考虑这个问题了。
为了提高搜索实效性,你可以建一个链接库,已抓取库,待抓取库。在抓取调度系统中设定抓取频率(间隔秒)检查一次,通过获取http头信息,检查Last-Modified, Content-Length更上次抓取是记录对比判断是否要进行重新抓取,存储介质建议用redis。
索引不能在发现有更新时就重建,可以通过建立增量索引方式针对新增或更新的数据,不过可能会出现索引重复数据的情况(不知Lucene有没有解决方案)。
以上只是一个思路。