Какой самый лучший и быстрый способ сравнить два URL? - PullRequest
4 голосов
/ 09 марта 2010

У меня есть две таблицы со списком URL, извлеченных из разных источников.

Я хочу найти общие записи и поместить их в отдельную таблицу.

Вот что я делаю:

  1. найти md5 хэш URL при их извлечении.
  2. Храните их в столбце.
  3. Я выбираю одну таблицу в виде массива, запускаю через нее цикл и вставляю значения из другой таблицы, где хэш md5 такой же.

РЕДАКТИРОВАТЬ: Должен ли я удалить URL-адреса "http://' и" www. "

Я хочу знать любой другой метод, который лучше и быстрее, используя который я могу выполнить выше.

Я использую PHP + MySQL

Ответы [ 3 ]

4 голосов
/ 09 марта 2010

MD5 немного медленный, если вам нужна реальная скорость. Попробуйте MurmurHash

Перед вычислением хеша необходимо выполнить следующие преобразования:

  • Strip "http://" и www.
  • Полосная косая черта
  • Нормализация URL ( urlencode it)
0 голосов
/ 09 марта 2010
SELECT * FROM table1 WHERE hash IN (SELECT hash FROM table2)

Возможно, вы также захотите взглянуть на концепцию объединения таблиц.

0 голосов
/ 09 марта 2010

Попробуйте что-то вроде:

INSERT INTO table3  (SELECT url FROM table1, table2 WHERE table1.hash = table2.hash)

Это не допустимый SQL-оператор, но подобный вложенный запрос должен прочитать URL-адреса из таблиц1 и таблиц2, которые совпадают по их хешу, и поместить их в таблицу3.

EDIT: Если вы хотите очистить ваши входные URL-адреса (например, удалить GET-переменные), я бы сделал это перед сохранением их в tabel1 и table2. Я бы не стал удалять http и www, поскольку "https://somesite"" и "http://somesite", а также" www.somesite.com "и" somesite.com "могут иметь разное содержимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...