SpringBoot集成Jplag本地查重

介绍

本文实现Springboot集成Jplag,本地查重代码,并返回对应相似度。

Jplag部署

Jplag为开源项目,可以直接下载jar包服务器部署。

建议使用本地运行jar包的方式,而不是使用Maven(官方文档写的不清楚)

Springboot集成

Jplag生成的文件默认为压缩包,官方提供可视化网址,如果要面向服务,还是直接传输相似度更合适。因此在执行后需要对压缩包进行解压。

Jplag的运行即每次运行一个jar包,完成一次相似度检测

public JsonNode runJPlag()
{
    try
    {

        ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", "java -jar jplag-4.3.0-jar-with-dependencies.jar /root/cpp -l cpp -r /root/results/result -t 5");
        Process process = processBuilder.start();

        // 获取外部进程的输入流
        InputStream inputStream = process.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

        String line;
        while ((line = reader.readLine()) != null)
        {
            System.out.println(line);
        }


        ProcessBuilder processBuilder2 = new ProcessBuilder("bash", "-c", "unzip /root/results/result.zip");
        processBuilder2.start();

        String path = "/root/overview.json";
        reader = new BufferedReader(new FileReader(path));
        StringBuilder jsonContent = new StringBuilder();
        while ((line = reader.readLine()) != null)
        {
            jsonContent.append(line);
        }
        reader.close();

        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(String.valueOf(jsonContent));
        System.out.println(jsonNode.get("metrics").asText());
        System.out.println(jsonNode.get("metrics").get(0).asText());
        System.out.println(jsonNode.get("metrics").get(0).get("topComparisons"));

        return jsonNode.get("metrics").get(0).get("topComparisons");
    }
    catch (IOException e)
    {
        throw new RuntimeException(e);
    }
}

可视化界面


SpringBoot集成Jplag本地查重
https://dreamerland.cn/2023/12/28/springboot/Springboot集成Jplag本地查重/
作者
Silva31
发布于
2023年12月28日
许可协议