Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Перевод url в числовой вид / 18 сообщений из 18, страница 1 из 1
03.06.2012, 13:18:42
    #37823115
Arakas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
всем привет.
стоит задача: есть много реферерров, они хранятса в мускуле. по ним будет select, т.к рефереры в текстовом виде, думаю для большей производительности нужно их переводить в некий хеш.
т.е напр реферер http://yandex.ru/test.html будет иметь видь 34534593. ПО началу думал хешировать функцией мд5. но мд5 не только числа а еще и символы выдает. еще был вариант с CRC но читал что бывают совпадения на двух одинаковых строках, т.е это отбрасывается. и еще вариант с механизмом хеширования урлов для определения гуглеПР, например:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function GetPageRank($q,$host='toolbarqueries.google.com',$context=NULL) {
        $seed = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. Yes, I'm talking to you, scammer.";
        $result = 0x01020345;
        $len = strlen($q);
        for ($i=0; $i<$len; $i++) {
                $result ^= ord($seed{$i%strlen($seed)}) ^ ord($q{$i});
                $result = (($result >> 23) & 0x1ff) | $result << 9;
        }
    if (PHP_INT_MAX != 2147483647) { $result = -(~($result & 0xFFFFFFFF) + 1); }
        $ch=sprintf('8%x', $result);
        return $ch;
          //$url='http://%s/tbr?client=navclient-auto&ch=%s&features=Rank&q=info:%s';
        //$url=sprintf($url,$host,$ch,$q);
        //@$pr=file_get_contents($url,false,$context);
        //return $pr?substr(strrchr($pr, ':'), 1):false;
}


но сдесь выдается в хекс значении, и незнаю каким типом делать поле в таблице.
подскажите какой вариант будет самым быстрым при выборке? или может быть существуют другие механизмы для оптимального хранения/поиска
т.е смысл такой, что скрипту передается урл, он его кодирует и делает селек в таблицу и если есть запись то значит в системе естьтакой урл.

Модератор: Arakas , пожалуйста, оформляйте код тегом SRC и попытайтесь соблюдать хотя бы основные правила русского языка.
...
Рейтинг: 0 / 0
03.06.2012, 20:45:47
    #37823386
BelowZeroTooCold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
Arakas, ASCII кодировка переводит символы с числа
...
Рейтинг: 0 / 0
03.06.2012, 20:50:55
    #37823390
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
bTree
...
Рейтинг: 0 / 0
03.06.2012, 20:51:16
    #37823391
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
BelowZeroTooColdArakas, ASCII кодировка переводит символы с числа
вам тока дай че-нить в ASCII попереводить
...
Рейтинг: 0 / 0
03.06.2012, 20:52:09
    #37823392
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
Если нужна большая скорость, смотрите в сторону Redis, MongoDB и т.п.
...
Рейтинг: 0 / 0
03.06.2012, 23:00:55
    #37823495
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
Если в хэш переводить, то можно к примеру так:
Код: php
1.
2.
3.
function hash($str){
  return "0x".substr(sha1($str, 0, 16));
}


Получаем 64-битное число, которое можно хранить в MySQL поле типа BIGINT. В запрос подавать прямо в таком виде, мускул уже разберётся, что оно 16-ричное.
...
Рейтинг: 0 / 0
03.06.2012, 23:35:17
    #37823530
Roin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
ШогалЕсли в хэш переводить, то можно к примеру так:
Код: php
1.
2.
3.
function hash($str){
  return "0x".substr(sha1($str, 0, 16));
}


Получаем 64-битное число, которое можно хранить в MySQL поле типа BIGINT. В запрос подавать прямо в таком виде, мускул уже разберётся, что оно 16-ричное.

Скажите а могут быть совпадения хешей двух разных строк? т.е sha1 может такое допустить? например crc алгоритм может. читал что мд5 надо постаратся чтобы 2 разные строчки имели один хеш - это очень редко. а тут как с этим ?
...
Рейтинг: 0 / 0
04.06.2012, 07:04:04
    #37823641
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
RoinШогалЕсли в хэш переводить, то можно к примеру так:
Код: php
1.
2.
3.
function hash($str){
  return "0x".substr(sha1($str, 0, 16));
}


Получаем 64-битное число, которое можно хранить в MySQL поле типа BIGINT. В запрос подавать прямо в таком виде, мускул уже разберётся, что оно 16-ричное.

Скажите а могут быть совпадения хешей двух разных строк? т.е sha1 может такое допустить? например crc алгоритм может. читал что мд5 надо постаратся чтобы 2 разные строчки имели один хеш - это очень редко. а тут как с этим ?
sha1($str) - нет, а вот substr(sha1($str), 0, 16) - вероятно может.
...
Рейтинг: 0 / 0
04.06.2012, 08:51:45
    #37823685
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
А зачем переводить текст в цифры?
...
Рейтинг: 0 / 0
04.06.2012, 09:22:14
    #37823707
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
HettА зачем переводить текст в цифры?
думаю сам ТС слабо понимает зачем. иначе бы не создал этой темы
...
Рейтинг: 0 / 0
04.06.2012, 16:17:36
    #37824526
Roin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
r uHettА зачем переводить текст в цифры?
думаю сам ТС слабо понимает зачем. иначе бы не создал этой темы

Как это слабо понимаю ? я же написал в первом топике, что поиск по числовым полям быстрее ежели по текстовым
Или я неправ ?
...
Рейтинг: 0 / 0
04.06.2012, 16:18:12
    #37824529
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
На чем основано ваше убеждение?
...
Рейтинг: 0 / 0
05.06.2012, 08:23:05
    #37825234
Roin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
Ребят, я прошу совета. Читал что по возможности нужно делать поле целочисленным (и желательно даже беззнаковым) даюы выборки по такому полю идут быстрее и занимают такие поля меньше байтов.
Посоветуйте сталкивались может с подобными задачами когда приходилось хешировать в числа строки и потом работать уже с числами ?
...
Рейтинг: 0 / 0
05.06.2012, 09:02:02
    #37825268
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
Roin,

вам ответили уже. используйте хеш md5 или sha. по ним и ищите.

или вы хотите свою написать? тогда приготовьтесь что по сложности это будет сопостовимо как раз с md5 или sha. ибо надо добиться уникальности хеша, небольшого размера.... а за этим стоит сложная математика... а следовательно время на проработку и реализацию алгоритма....
...
Рейтинг: 0 / 0
05.06.2012, 09:39:04
    #37825308
Roin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
Спасибо, буду использовать мд5. Только каким типом делать поле в MySQL для него? не строковым же, подскажите
...
Рейтинг: 0 / 0
05.06.2012, 10:31:49
    #37825411
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
CHAR(32), BINARY(32)
...
Рейтинг: 0 / 0
05.06.2012, 10:57:11
    #37825474
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
Только я все равно не понимаю, зачем хешировать? К тому же это приводит к избыточности данных.
...
Рейтинг: 0 / 0
05.06.2012, 10:57:22
    #37825475
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод url в числовой вид
по крайней мере в данном случае.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Перевод url в числовой вид / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]