架构师

您现在的位置是:首页 > 程序人生 > 网络爬虫

网络爬虫

Java爬虫第19课:如何将GitHub上的SimHash源码导入其他项目中使用

架构师小跟班 2020-07-16 网络爬虫
需求背景SimHash算法个人实现比较麻烦,网上有大佬已经实现了,我们拿来用就可以了。源码仓库:https://github.com/CreekLou/simhash.git但是有老师说这个仓库有点小问题,修改版我

需求背景

SimHash算法个人实现比较麻烦,网上有大佬已经实现了,我们拿来用就可以了。源码仓库:https://github.com/CreekLou/simhash.git

但是有老师说这个仓库有点小问题,修改版我上传到CSDN上了(资源地址:https://download.csdn.net/user/wangxy_job/uploads),如果没积分,加我微信我直接发。

我们需要把源码下载到本地,生成并安装jar包到其他的Maven项目中。

操作步骤

第一步:下载源码到本地。

第二步:导入源码到Idea,File > New > Module from Existing Sources...

选择simhash,点击OK。

第三步:在Maven Projects视图中,点击刷新项目列表,出现simhasher,

然后执行install,如果成功会提示build success

第四步:打开simhash项目源码的pom.xml文件,复制其坐标信息

<groupId>com.lou</groupId>
<artifactId>simhasher</artifactId>
<version>0.0.1-SNAPSHOT</version>

第五步:将上述坐标信息粘贴到其他项目的pom.xml文件中即可。

第六步:测试

需要创建两个文件testin.txt和testin2.txt。

package com.jiagou1216.crawler.test;


import com.lou.simhasher.SimHasher;
import org.apache.commons.io.IOUtils;

import java.io.FileInputStream;
import java.io.IOException;

/**
 * @author 架构师小跟班
 * @Description: https://www.jiagou1216.com
 * @date 2020/7/17 0:12
 */
public class CrawlerDemo {
    public static void main(String[] args) {
        String str1 = readAllFile("D:/test/testin.txt");
        SimHasher hash1 = new SimHasher(str1);
        //打印simhash签名
        System.out.println(hash1.getSignature());
        System.out.println("============================");

        String str2 = readAllFile("D:/test/testin2.txt");
        //打印simhash签名
        SimHasher hash2 = new SimHasher(str2);
        System.out.println(hash2.getSignature());
        System.out.println("============================");

        //打印海明距离
        System.out.println(hash1.getHammingDistance(hash2.getSignature()));
    }

    /**
     * 测试用
     *
     * @param filename 名字
     * @return
     */
    public static String readAllFile(String filename) {
        String everything = "";
        try {
            FileInputStream inputStream = new FileInputStream(filename);
            everything = IOUtils.toString(inputStream);
            inputStream.close();
        } catch (IOException e) {
        }

        return everything;
    }
}

结果:

文章评论