문제

업데이트: 나는 이제 PHP 확장자를 썼다 php_ssdeep SSDEEP C API가 기본적으로 PHP에서 퍼지 해싱 및 해시 비교를 용이하게합니다. 자세한 정보는 찾을 수 있습니다 내 블로그에서. 이것이 사람들에게 도움이되기를 바랍니다.

다양한 파일 형식 (잠재적으로 1000 개의 파일)을 저장할 Linux 상자에 PHP에 사용자 정의 문서 관리 응용 프로그램을 작성하는 데 관여하고 있으며 데이터베이스의 복제를 방지하기 위해 텍스트 문서가 업로드되었는지 확인할 수 있어야합니다. .

기본적으로 사용자가 새 파일을 업로드하면 복제 또는 유사한 내용을 포함하는 파일 목록을 제시 할 수 있습니다. 그러면 기존 문서 중 하나를 선택하거나 자체적으로 업로드 할 수 있습니다.

비슷한 문서는 비슷한 문장과 동적으로 생성 된 키워드 목록을 위해 콘텐츠를 통해 결정됩니다. 그런 다음 사용자와 비율 일치를 표시하여 복제물을 찾도록 도와 줄 수 있습니다.

이 프로세스에 대한 패키지와 과거에 어떻게했는지에 대한 아이디어를 추천 할 수 있습니까?

모든 텍스트 내용을 가져 와서 수행 할 수 있다고 생각하는 직접 복제

  • whitespace를 벗겨냅니다
  • 구두점 제거
  • 하위 또는 대문자로 변환합니다

그런 다음 MD5 해시를 형성하여 새로운 문서와 비교하십시오. 해당 항목을 제거하면 사용자가 문서를 편집하여 추가 단락 브레이크를 추가하는 경우 속임수가 발견되지 않도록하는 데 도움이됩니다. 이견있는 사람?

이 프로세스는 잠재적으로 야간 작업으로 실행될 수 있으며 계산 요구 사항이 실시간으로 실행되지 않으면 다음 로그인 할 때 중복을 사용자에게 알릴 수 있습니다. 그러나 실시간은 선호됩니다.

도움이 되었습니까?

해결책

업데이트: 나는 이제 PHP 확장자를 썼다 php_ssdeep SSDEEP C API가 기본적으로 PHP에서 퍼지 해싱 및 해시 비교를 용이하게합니다. 자세한 정보는 찾을 수 있습니다 내 블로그에서. 이것이 사람들에게 도움이되기를 바랍니다.

제작자 인 Jesse Kornblum이 "퍼지 해싱"이라고 부르는 프로그램을 찾았습니다. 매우 기본적으로 유사한 파일이나 동일한 일치를 감지하는 데 사용할 수있는 파일의 해시를 만듭니다.

그 뒤에있는 이론은 여기에 문서화되어 있습니다. 컨텍스트를 사용하여 거의 동일한 파일을 식별합니다

SSDEEP 프로그램의 이름이며 Windows 또는 Linux에서 실행할 수 있습니다. 법의학 컴퓨팅에 사용하기위한 것이지만, 우리의 목적에 충분히 적합한 것 같습니다. 나는 오래된 Pentium 4 기계에서 짧은 테스트를 수행했으며 2 파일과 일치하는 일치를 찾는 23MB (135,000 파일 미만의 해시)의 해시 파일을 통과하는 데 약 3 초가 걸립니다. 그 시간에는 내가 검색 한 두 파일에 대한 해시 생성이 포함됩니다.

다른 팁

나는 Web2Project에서 비슷한 문제를 해결하고 있으며 주위에 물어보고 파는 후 "사용자는 신경 쓰지 않는다"는 결론에 도달했습니다. 중복 문서가 있습니다 그렇지 않습니다 자체 이름으로 자신의 문서를 찾을 수있는 한 사용자에게 중요합니다.

즉, 여기에 내가 취하는 접근법은 다음과 같습니다.

  • 사용자가 원하는 프로젝트/작업과 연결하는 문서를 업로드 할 수 있습니다.
  • 파일의 이름은 http .. 또는 웹 루트 외부에 더 잘 저장되는 것을 방지하기 위해 이름을 바꿔야합니다. 사용자는 여전히 시스템에서 파일 이름을 볼 수 있으며 다운로드하면 "적절한"파일 이름으로 헤더를 설정할 수 있습니다.
  • 미래의 어느 시점에서, 문서를 처리하여 중복이 있는지 확인합니다.이 시점에서 우리는 ~ 아니다 문서 수정. 결국, 공백이나 대문자가 변경되는 중요한 이유가있을 수 있습니다.
  • 속임수가있는 경우 새 파일을 삭제 한 다음 이전 파일에 링크하십시오.
  • 속임수가 없다면 아무것도하지 마십시오.
  • 파일 형식에 따라 파일 형식에 따라 Word Docs의 경우에도 많은 옵션이 있습니다.

이 모든 것에 걸쳐, 우리는 사용자에게 중복이라고 말하지 않습니다 ... 그들은 상관하지 않습니다. 돌보는 것은 미국 (개발자, DB 관리자 등)입니다.

그렇습니다. 나중에 새 버전의 파일을 업로드하더라도 작동합니다. 먼저, 가비지 컬렉션에서와 마찬가지로 파일에 대한 참조를 삭제합니다. 기존 파일 만 삭제하면 참조가없는 경우에만 기존 파일 만 삭제합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top