2013-06-08 33 views
5

Kullanıcıların reklamlarını ücretsiz olarak yayınlayabilecekleri gizli bir web sitesi (PHP ve Mysql) var. Ancak kullanıcılar genellikle çift reklam yayınlar. Komut, tam çift içeriği yayınlamalarına izin vermez, bu nedenle bir veya iki karakteri değiştirerek bunu yaparlar.Yinelenen içerikler nasıl kaldırılır?

Yinelenen reklamı bulmanın ve kullanıcıyı uyarmanın (metnin bir kısmını değiştirmiş olsa bile) herhangi bir yolu var mı?

Sitem PHP ve Mysql'de. Arama için sphix kullanıyorum. Bunu mongodb ve apache solr'a değiştirmeyi düşünüyorum.

+0

İçeriğin çift olup olmadığını kontrol etmek için ne kadar ilerlemek istiyorsunuz? Kaç karakter var? Kişilerin yalnızca bir haftada bir kez reklam yayınlayabileceği bir kısıtlama ile çalışabilirsiniz. –

+0

Kullanıcılarınız sahte parametreler ekliyor mu, yani http://foo.com/image.png?fakeparam=1? Bu durumda, tüm parametreleri kapatabilir ve yalnızca parametrelenmemiş URL'yi düşünebilirsiniz. Ancak bu, insanların aynı dosyayı farklı bir adla yeniden yüklemesini engellemez ... –

+0

@ Alexander Cogneau İçeriğin% 80 benzer olması durumunda, reklamı yinelenen olarak kabul edeceğim (olduğu gibi durma kelimeleri hariç) Orada, vb) Hayır, aynı günde birden fazla ilan gönderen kişileri kısıtlayamayız. Aynı gün içinde gönderilen kopyaları manuel olarak bulabiliriz, ancak bir haftalık yayınlarda arama yapamıyoruz –

cevap

0

Cümleyi kelimelere ayıran ve sonra her bir kelimeyi tabloyla eşleştiren ve sonra da veritabanındaki eşleşme yüzdesini bulabileceğiniz bir işlev yazabilirsiniz. Yüzdeye göre karar verebilirsiniz. Daha az veritabanı denetimi için, bir dizide saklayabileceğiniz ortak sözcükleri ve fiilleri kaldırabilirsiniz. Bu benim kişisel düşüncem başka daha iyi teknikler de olabilir. Ama iyi bir soru olduğunu söylemeliyim.

0

Levenstein mesafe, jarowinkler, intihal algoritmaları .. İki dizge arasındaki benzerliği hesaplar basit Levenstein mesafesi

+0

Bazı manuel kalite kontrollere ihtiyaç duyulacaktır. Örneğin, iki farklı kullanıcı aynı caddede boş daireler için bir ilan yayınlayabilir: "25 Lake Ave" ve "26 Lake Ave" - ​​Levenshtein mesafesini kullanırsanız, o zaman çift olarak işaretlenebilir. Bununla birlikte, yinelenen mesajlar, daha yüksek Levenshtein mesafesine sahip olan 25 Lake Ave ve 25 Lake Avenue gibi olabilir! – arun

İlgili konular