1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Как найти дубли в базе

Тема в разделе "Web Coding", создана пользователем webinteger, 25 авг 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. webinteger

    webinteger Читатель

    Заблокирован
    Регистр.:
    8 авг 2007
    Сообщения:
    17
    Симпатии:
    3
    Есть доска объявлений, и порой подают одно и то объявление несколько раз, или изменят 1-2 слова и добавляют снова. Каким способом можно выбрать такие похожие объявления. У меня есть идея считать количество определенных букв и записывать в отдельную колонку потом при добавлении сверить, может у кого-то будут лучшие идеи.
     
  2. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    Буквы счетать бесполезное занятие.

    Первое, нужно запретить постить ботам (правильная капча и т.д.).

    Второе, без модерации не обойтись. А ещё лучше предмодерации.

    Втретьих, в таких сообщениях должна быть информация об обратной связи, следовательно можно фильтровать по ней.
     
  3. webinteger

    webinteger Читатель

    Заблокирован
    Регистр.:
    8 авг 2007
    Сообщения:
    17
    Симпатии:
    3
    Первое, нужно запретить постить ботам (правильная капча и т.д.). - есть

    Второе, без модерации не обойтись. А ещё лучше предмодерации. - есть , но хочется избавитса от модерации.

    Втретьих, в таких сообщениях должна быть информация об обратной связи, следовательно можно фильтровать по ней. -
    пользователи дают несколько объявлений разного содержания, но контактная информация одинакова.

    Мне посоветовали писать алгоритм высчитывания позиций слов в тексте, но покищо я не представляю как.
     
  4. MrXaK

    MrXaK Писатель

    Регистр.:
    21 авг 2007
    Сообщения:
    6
    Симпатии:
    0
    есть в пхп функция, levenshtein()
    http://ru2.php.net/manual/ru/function.levenshtein.php
    длина строки ессно ограничена, но эт всё решаемо..
    имхо создать базу подозрительных сообщений, а потом сравнивать новое сообщения с подозрительными с использованием этой функции.. если число мало, значит скорее всего сообщение уже есть...
     
  5. webinteger

    webinteger Читатель

    Заблокирован
    Регистр.:
    8 авг 2007
    Сообщения:
    17
    Симпатии:
    3
    "создать базу подозрительных сообщений" - ето уже ручная модерация, + от етой функціии мне говорили сервак может упасть , уявите в базе 10000 сообщений , каждий день добавляетса около 80 штук.
     
  6. everest

    everest

    Регистр.:
    20 дек 2006
    Сообщения:
    197
    Симпатии:
    20
    Вариант из теории поисковых систем - есть статьи как определяются сходие страницы (дубли). Там чистая математика и статистика...

    Например, сделать свертку текста в большое число или функцию, так чтобы при отличии нескольких слов отличались только некоторые разряды функции. И потом эти функции сравнивать...

    Весной мне попадалась пара таких статей на русском - сейчас не могу вспомнить где именно...
     
  7. webinteger

    webinteger Читатель

    Заблокирован
    Регистр.:
    8 авг 2007
    Сообщения:
    17
    Симпатии:
    3
    Точнее можете указать в какую сторону рыть, как оказывается данный вопрос интересует не только меня, вчера написал вебмастеру одной доски объявлений как он борется с дублежами, он отписал что ручной модерациею, и тоже хотел бы программно фильтровать. Вопрос очень актуален, только ответов никак неможу найти.
     
  8. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    Знаешь, у тебя скорее вопрос не из области программирования, а удобства пользователя.
    Как ты ранее сказал, у тебя стоит капча из чего следует вывод, что пользователи специально заходят на борду, чтобы добавить такое же сообщение.
    Далее мыслим логически, они это делают не просто так, а с какой то целью. Нужно определить эту цель и предоставить им более удобное средство достигать эту цель.
    В результате пользователям работать с бордой удобнее, и ты не паришся с ду***ми объявлений.

    p.s. Сдается мне, что они просто хотят чтобы их объявление было первым в списке ;)
    p.p.s Почитай чтонибудь по юзабилити.
    p.p.p.s. Есть более злобный вариант, сделать так, чтобы пользователям было невыгодно плодить объявления :)
     
  9. Ivan Zhukov

    Ivan Zhukov Создатель

    Регистр.:
    29 июн 2007
    Сообщения:
    18
    Симпатии:
    3
    а не проще сначала проверять наличие существования обявления в базе?
     
  10. everest

    everest

    Регистр.:
    20 дек 2006
    Сообщения:
    197
    Симпатии:
    20
    можно выбрать все слова из объявления в массив, упорядочить их и сравнить с такими же массивами объявлений, котовые уже есть в базе...
    если количество совпадений близко к количеству слов в объявлении - значит это дубль (только надо исключить короткие обявления - иначе сообщения в пару слов не пройдут проверку)...

    решение конечно кривоватое, но сработать может...
     
Статус темы:
Закрыта.