查找重复项

阅读其他语言: English Español 한국어 Português Русский

重复查找器是一款开源应用程序,用于检测一个或多个文件中的相似文本。 它可以用于查找100%的重复内容以及相似但不相同的内容。 该工具兼容包括纯文本、Markdown 和 XML 在内的几种格式。

重复查找工具可以帮助您:

重复内容示例

这是一个快速示例,可以让你了解该工具检测的内容:

Chunk 1:
Open the Google Play Store on your Android device, search for "AwesomeApp", then tap "Install" to download and install the app.
Chunk 2:
Open the App Store on your iOS device, search for "AwesomeApp", then tap "Get" to download and install the app.

如何使用

  1. 下载应用程序。 或者,您可以自己从源码.
  2. 确保您的计算机上安装了 Java 16 或更高版本
  3. 在终端中,打开下载的 .jar 文件所在的文件夹
  4. 执行 java -jar duplicate-finder.jar 并使用以下参数:

    参数 意义 例子
    -r / --root
    必填
    要搜索重复内容的文件夹的相对或绝对路径 -r=./my-project/
    -o / --output 保存分析结果的文件夹的相对或绝对路径。 如果未指定目录,重复项查找器将使用当前工作目录。 -r=./my-project/duplicates/
    -f / --fileMask 要分析的文件扩展名的逗号分隔列表。默认情况下,会分析所有文件。 -f=md,mdx
    -i / --indexer

    将什么视为文本块。以下选项可用:

    • md – 一个markdown元素
    • line – 单行文本
    • xml – 一个XML元素
    • file – 整个文件的内容
    • auto – 尝试从文件掩码推断
    -i=md
    -l / --minLength 要分析的文本块的最小长度(以字符计)。 默认值:100(短于 100 个字符的文本片段将被忽略) -l=150
    -s / --minSimilarity 两个文本块被视为重复的最低相似度。 默认值: 0.9 (90%) -s=0.85
    -d / --minDuplicates 报告重复组的最低重复次数。默认值:1(一个重复项就够了) -d=5
    -h / --headless 不打开重复查看器,仅将结果写入文件 -h
    -v / --verbose 是否将进度和错误记录到控制台。 如果分析耗时过长且怀疑存在问题,请使用此选项。 默认:不记录 -v
    -m / --memory 低内存模式 - 在牺牲分析速度的情况下,将重复查找器的内存占用降到最低。 -m
    -g / --gram (高级)ngram 长度 – 影响速度、内存占用以及分析的准确性。差异取决于内容的具体情况。 -g=10

命令示例

以下是您的命令可能的样子:

java -jar duplicate-finder.jar -r=/Users/me.user/my-site -i=md -f=md,mdx -s=0.85 -d=5 -l=200

上述命令将执行以下操作:

结果

根据设置和项目规模,您可能需要稍等片刻以完成分析。 之后,结果将会在重复项查看器中打开,并保存在用“-o”命令行选项定义的文件夹中。 如果没有指定选项,输出将写入工作目录。

以下是您在重复查看器中看到的:

Duplicate finder UI Duplicate finder UI
  1. 工具栏:配置字体大小、排序顺序,以及是否只想看到每个重复组的单个参考块(2)。
  2. 参考块列表:选择作为比较参考的块。
  3. 重复块列表:在选择参考块(2)后,此列表将显示与其相似的块。要预览重复项,请从列表中选择它。
  4. 参考块预览:选择参考块(2)后,可以在此处预览其内容。常见部分以绿色显示,不同部分以红色显示。重复块(3)中具有共同部分的数量越多,显示的绿色就越多。
  5. 重复块预览:选择重复块后,其预览将出现在此处。您可以使用它与选定的参考块(4)进行快速比较。

了解更多及联系我们

如果您对该工具的开发感兴趣,请查看相关的博客系列文章:

如有反馈意见,可以使用本页底部的联系方式与我联系。我很乐意听取您的意见和功能请求。

许可

代码在 MIT 许可证下许可,这意味着您可以自由使用它用于任何目的,以及分叉和修改它。

all posts ->