За последние 24 часа нас посетили 37985 программистов и 1811 роботов. Сейчас ищут 874 программиста ...

Сопоставлении массивов — как ускорить?

Тема в разделе "Прочие вопросы по PHP", создана пользователем starryknight, 19 ноя 2016.

  1. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    По какому критерию определяется какой именно вариант оставлять? Я этот момент не понял.
     
  2. Poznakomlus

    Poznakomlus Активный пользователь

    С нами с:
    12 сен 2014
    Сообщения:
    96
    Симпатии:
    19
    Адрес:
    Киев
    попробуйте заменить слова индексами и применить levenshtein
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А это интересно..
    Это вот не очень хороший показатель. Ты уверен, что оно не съедает лишнего? Проверь на контролируемых объемах, где однозначно видно все.
    В PHP есть нативная реализация подобных вещей, даже расстояния Левенштейна есть, пробовал всякое использовать, но на огромных объемах данных скорость очень сильно проседала, когда надо сравнить все со всем. Это посимвольные операции по факту. Бить словосочетания на слова и проверять схождение массивов оказалось более быстрым решением для данной ситуации. Там, скорее всего, используются какие-то оптимизации типа подсчета коротких хэшей значений.
    --- Добавлено ---
    В принципе, решение @Chushkin уже более, чем достаточное, но меня смущает количество "отбраковки", которое оно выдает.
     
  4. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Что значит "не хороший"? А какой "хороший"?
    Не уверен, конечно. ТС не предоставил "правильный ответ". :(
    Какие проблемы? Функция есть, проверяйте. Потом расскажите, правильно работает или нет.
    На той тысяче данных, результаты вашей функции и моей совпадают - оставляют 985 штук (если не запамятовал, в общем - одинаковое количество).
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Я просто вот из чего исхожу:
    Хотя, с другой стороны, у автора отсев на долгой дистанции был довольно большим.
    И да, давно это я стал такой важной персоной, что ты ко мне на "вы" обращаться стал? Брось ты это дело:)
    --- Добавлено ---
    Имеем две фразы. Если в одной из фраз есть все слова, входящие в другую, то эту "другую" выбрасываем. Если обе фразы идентичны, то выбрасываем любую их них. Или просто решаем этот момент через array_unique еще до начала обработки.