Выборка из mysql и сравнение значений PHP

1 234 5
Mad_Man
На сайте с 10.11.2008
Offline
162
#21
Ilekor:
Вот как делаю я! Но проц не выдерживает, вот я и ищу способ это оптимизировать.

По таймауту вылетает? Если поставить таймаут в 5 минут выполнения, то сколько элементов из ваших 100000 успевает перебрать цикл?

iqmaker
На сайте с 17.04.2012
Offline
309
#22

Ilekor, ну так пробовали упорядочить массив способом, которым я попросил?

Mad_Man
На сайте с 10.11.2008
Offline
162
#23
iqmaker:
Ilekor, ну так пробовали упорядочить массив способом, которым я попросил?

А что он сортировать будет? У него поля сигнатур - это хэши изображений в виде строки, а схожесть определяется внешней либой при сравнении хэшей попарно. Результат сравнения - значение вероятности от 0 до 1 включительно с обеих сторон. А вы и вовсе разность рандомных чисел с 10 зачем-то сравниваете :-\

Ilekor
На сайте с 22.04.2009
Offline
138
#24
Mad_Man:
По таймауту вылетает? Если поставить таймаут в 5 минут выполнения, то сколько элементов из ваших 100000 успевает перебрать цикл?

Сервер после нескольких секунд (примерно 5-6 сек) отвечает 502 Bad Gateway

Лучший дорген 21 века AgDor(http://agdor.info)
iqmaker
На сайте с 17.04.2012
Offline
309
#25
Mad_Man:
А что он сортировать будет? У него поля сигнатур - это хэши изображений в виде строки, а схожесть определяется внешней либой при сравнении хэшей попарно. Результат сравнения - значение вероятности от 0 до 1 включительно с обеих сторон. А вы и вовсе разность рандомных чисел с 10 зачем-то сравниваете :-\

сортировать он будет расстояния между элементами, тут возможность сортировки определяется каким именно образом определяется расстояние между элементами. Сравнение с 10 это как пример выделения элементов в группы, т.к. подробностей сравнения не было, вместо сравнения с 10 нужно использовать функцию определения расстояния между элементами, но делать это нужно на упорядоченном множестве.

Ilekor, почему вы не отвечаете на вопросы?

Ilekor
На сайте с 22.04.2009
Offline
138
#26
iqmaker:
сортировать он будет расстояния между элементами, тут возможность сортировки определяется каким именно образом определяется расстояние между элементами. Сравнение с 10 это как пример выделения элементов в группы, т.к. подробностей сравнения не было, вместо сравнения с 10 нужно использовать функцию определения расстояния между элементами, но делать это нужно на упорядоченном множестве.

Ilekor, почему вы не отвечаете на вопросы?

Я не могу понять Ваш вопрос!

И не могу понять что я должен из вашего примера сделать, точнее как он поможет собрать массив и проверить!

iqmaker
На сайте с 17.04.2012
Offline
309
#27
Ilekor:
Я не могу понять Ваш вопрос!

ну так напишите, что не понимаете, полагаете лучше игнорировать?

Еще раз, в php есть функция: http://php.net/manual/en/function.uksort.php, в которую нужно скормить ваш массив элементов и компаратор принимающий пару элементов, внутри которого будет ваша функция определения расстояния отдавать ответ. Нужно посмотреть каким образом будет отсортировано множество и окажутся ли все похожие картинки рядом в этом массиве элементов. Если все получится, ваша проверка на количестве элементов более 100к будет работать во много раз ( N^2 / (N*ln(N)+N) ) быстрее.

Ilekor
На сайте с 22.04.2009
Offline
138
#28



function cmp($a, $b)
{
return strcasecmp($a, $b);
}

$sql_select = "SELECT id, signature, news_id, images FROM images WHERE signature != ''";

$sql_result = $db->query( $sql_select );
while ( $row = $db->get_row( $sql_result ) ) {
$sig[$row['signature']] = $row;
}

uksort($sig, "cmp");

foreach ($sig as $key => $value) {
echo "$key: $value<br>";
}

Отсортировал, но в лоб не пойму что мне с этим делать :)


юяю: Array
яюю: Array
юяяююяюю: Array
яяюяяяюююююяюю: Array
яяюяюяюяяяюяюяюяюяяяяюяю: Array
яюююя: Array
яяюяюююююяюююяяюяююяююяюяяяяяя: Array
ююяюяюяюяюяюяюююяяяяююяюяяююяюяюяяюяюяююяюяюяюююяяяяюяяюяюяюяюяюю: Array
яяяяяяююяюяяююююююю: Array
яяяяя: Array
яюяюяюяюяююююяюяюяюяюяяяяяяяяюяюяюяюяююююяюяюяюяюяяяя: Array
яюююя: Array
яяяяяяяяяяяяюююююяююююююяяюююююююяюя: Array
iqmaker
На сайте с 17.04.2012
Offline
309
#29

Вместо функции strcasecmp, вам надо подставить библиотечную функцию, возвращающую расстояние между картинками.

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

faustmax
На сайте с 01.01.2015
Offline
1
#30

Аффтар, а скрестить полнотекстовый поиск MySQL и регулярки не пробовали?

1 234 5

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий