BJTU
交大内网搜索系统
技术文档
吴亚东
2012/5/16
技术文档
1 / 12
目录
Crawl 部分------------------------------------------------------------------------------------------------2
Injector 部分----------------------------------------------------------------------------------------------3
Generator 部分--------------------------------------------------------------------------------------------4
Fetcher 部分-----------------------------------------------------------------------------------------------5
URL 规范化-----------------------------------------------------------------------------------------------6
URLFilter---------------------------------------------------------------------------------------------------7
域名评分方法----------------------------------------------------------------------------------------------8
FileIndex 部分---------------------------------------------------------------------------------------------9
网页分析部分----------------------------------------------------------------------------------------------10
权重设计----------------------------------------------------------------------------------------------------11
搜索部分----------------------------------------------------------------------------------------------------12
2 / 12
.
Crawl 部分
程序架构
Injector injector = new Injector();
Generator generator = new Generator();
Fetcher fetcher = new Fetcher();
//线程池
ExecutorService pool = Executors.newCachedThreadPool();
try {
//引入种子列表
injector.inject(urlPath, crawlPath);
int i ;
for(i = 0;i < depth;i ++)
{
//generator
String[] paths = generator.generate(crawlPath, segments, topN,
System.currentTimeMillis(),type);
if(paths == null)
{
log.info("stopping at depth " + i + ",no more urls!");
System.out.println("stopping at depth " + i + ",no more urls!");
break;
}
//fetch
fetcher.fetch(paths, segments, webPath, threads,pool);
//更新数据库,删除 segments 文件夹中的内容
injector.inject(updatePath, crawlPath);
File file = new File(segments);
if(!deleteDirector(file))
{
log.info("delete " + segments + " ,failed!");
System.out.println("delete " + segments + " ,failed!");
}
}
3 / 12
Injector 部分
功能:
将 url 集合进行格式化,过滤,并设定 UNFetched 状态
将 url 进行合并,消除重复的 URL 路口。
将 URL 级其状态,分值存入 crawldb 数据库。
算法:
将保存在文件中的种子 url 取出,变成<url,CrawlDatum>(当然要进行规范,过滤)
如果有上一次形成的 crawlDB,同样取出所有的<url,crawlDatum>,和新加入的键值对
一起加入一个 hashMap,注意要先新的种子加入,然后再久的 url 加入。然后保存到 tempdb
中。处理完,将旧的 crawlDB 删除,将 tempDB 改名保存为新的。
注意:CrawlDatum 保存的是 url 很多状态和信息的类
- 1
- 2
前往页