package guang.crawler.siteManager.docid;
import guang.crawler.commons.WebURL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Base64;
/**
* 采用MD5+BASE64的方式生成DocID。
* <p>
* 这样做是因为需要每个URL的文档ID都不同,并且同一个URL的文档ID都相同.
*
* @author yang
*
*/
public class MD5UrlDocidServer implements DocidServer {
private final String DIGESTALG = "MD5";
private MessageDigest digest;
public MD5UrlDocidServer() throws NoSuchAlgorithmException {
this.digest = MessageDigest.getInstance(this.DIGESTALG);
}
@Override
public String next(final WebURL webUrl) {
// 获取URL的MD5表示
byte[] digestData = this.digest.digest(webUrl.getURL()
.getBytes());
// 使用Base64编码
digestData = Base64.encodeBase64(digestData);
// 返回最终的码值对应的字符串
return new String(digestData);
}
}