2013-06-08 23 views
5

Mam zastrzeżoną stronę internetową (w PHP i MySQL), w której użytkownicy mogą publikować swoje ogłoszenia bezpłatnie. Ale użytkownicy często publikują zduplikowane reklamy. Skrypt nie zezwala im na publikowanie dokładnych duplikatów, więc robią to poprzez zmianę jednego lub dwóch znaków.Jak usunąć zduplikowaną zawartość?

Czy istnieje sposób na znalezienie duplikatu reklamy i powiadomienie użytkownika (nawet jeśli zmodyfikował część tekstu)?

Moja strona jest w PHP i MySQL. Używam sphix do wyszukiwania. Myśląc o zmianie tego na mongodb i apache solr.

+0

Jak daleko zajdziesz sprawdzając czy zawartość jest duplikowana? Ile znaków? Możesz pracować z ograniczeniem, że ludzie mogą publikować reklamy tylko raz w tygodniu. –

+0

Czy Twoi użytkownicy dodają fałszywe parametry, np. Http://foo.com/image.png?fakeparam=1? W takim przypadku można odciąć wszystkie parametry i rozważyć adres URL bez parametrów. Jednak to nie powstrzyma ludzi przed ponownym załadowaniem tego samego pliku pod inną nazwą ... –

+0

@ Alexander Cogneau Rozważę reklamę jako duplikat, jeśli zawartość jest podobna do 80% (z wyjątkiem słów stop takich jak: is, the, was, tam, itp.) .. Nie, nie możemy ograniczyć liczby osób publikujących wiele reklam tego samego dnia. Możemy ręcznie znaleźć duplikaty opublikowane w tym samym dniu, ale nie możemy wyszukiwać w starych, tygodniowych postach. –

Odpowiedz

0

Możesz napisać funkcję, która podzieli zdanie na słowa, a następnie dopasuje każde słowo do tabeli, a następnie znajdzie procent dopasowania w bazie danych. Na podstawie procentu możesz podjąć decyzję. W przypadku mniejszej liczby sprawdzeń bazy danych można usunąć popularne słowa i czasowniki, które można przechowywać w tablicy. Moją osobistą opinią może być kilka innych lepszych technik. Ale muszę powiedzieć, że to dobre pytanie.

0

Levenstein odległość, jarowinkler algorytmy plagiat .. Spójrz im je na SO

Chciałbym zacząć od prostego Odległość Levenshteina

+0

Wygląda na to, że potrzebna będzie ręczna kontrola jakości. Na przykład dwóch różnych użytkowników może zamieścić ogłoszenie o wolnych mieszkaniach na tej samej ulicy: '25 Lake Ave' i' 26 Lake Ave' - jeśli używasz odległości Levenshtein, to może oznaczyć jeden jako duplikat. Jednak zduplikowane posty mogą przypominać '25 Lake Ave' i' 25 Lake Avenue', które mają wyższą odległość Levenshtein! – arun