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

iqmaker
На сайте с 17.04.2012
Offline
309
#31
Ilekor:
Отсортировал, но в лоб не пойму что мне с этим делать

в общем чуда не случилось, сортировка по расстоянию разбрасывает эти элементы в разные места, совсем не рядом, но делает это быстро :)

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

http://stackoverflow.com/questions/9703762/libpuzzle-indexing-millions-of-pictures

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

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

Я понял, мне нужно создать еще одну базу. Разделить это на слова и потом искать схожесть по этим словам. База конечно будет не хило весить :)

Лучший дорген 21 века AgDor(http://agdor.info)
iqmaker
На сайте с 17.04.2012
Offline
309
#34
Ilekor:
Я понял, мне нужно создать еще одну базу. Разделить это на слова и потом искать схожесть по этим словам. База конечно будет не хило весить

попробуйте, только наверное не базу, а 1-2 таблицы

Ilekor
На сайте с 22.04.2009
Offline
138
#35
iqmaker:
попробуйте, только наверное не базу, а 1-2 таблицы

я просто выразился не совсем верно :)

iqmaker
На сайте с 17.04.2012
Offline
309
#36
Ilekor:
я просто выразился не совсем верно

ок, только пишите как идут дела, надо добить задачу.

Ilekor
На сайте с 22.04.2009
Offline
138
#37
iqmaker:
ок, только пишите как идут дела, надо добить задачу.

Ну я чуток выпил уже, так что завтра продолжу.

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

Долго делал различные способы.

Создал все по методу http://stackoverflow.com/questions/9...ns-of-pictures

Есть сигнатуры, есть сигнатуры разделенные на слова.

Как теперь сделать запрос mysql на выборку похожих ?

К примеру имеем переменную с сигнатурой

$sig = "сигнатура"

GoRSS
На сайте с 29.07.2013
Offline
138
#39

Прочитал все сообщения и ничего не понял. Начну писать, а вы подправьте.

Насколько понимаю, нужно просто найти дубли, не повесив сервер. Моя лень заставляет считать себя новичком в php. Главное поймите суть и укажите, если концепция не в ту степь.

Чтобы сэкономить ресурсы, делать будем в несколько проходов, с каждым разом уменьшая количество строк при выборке.

1. В таблицу добавим поле дата_месяц (d0901).

2. Таблицу с сигнатурами назовем sig

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

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

$ids=$_SESSION[ids]; // здесь будем хранить id групп. Дописать substr последней запятой.

$res=mysql_query("SELECT * FROM sig WHERE `d0901`='' AND `id` NOT IN ($ids) LIMIT 1"); о переменной $ids позже

$row=mysql_fetch_assoc($res); // взяли элемент для сравнения.

$res2=mysql_query("SELECT * FROM sig WHERE `d0901`=''"); //

while ($row2=mysql_fetch_assoc($res2)) {

if ($row2[sig]==$row[sig]) {$res3=mysql_query("UPDATE sig SET d0901='$row[id]' WHERE id='$row2[id]'");} // если есть совпадение, запишем id группы. Группа - id элемента $row[id], первого запроса в начале скрипта

}

$res4=mysql_query("UPDATE sig SET d0901='$row[id]' WHERE id='$row[id]'"); //

$_SESSION[ids]=.','.$row[id];

// сделать редирект на ту же страницу

}

https://commersoft.ru - софт: Google Indexing [индексация в Гугле по API] - Webcontrol [мониторинг сайтов и доменов]
HiNeX
На сайте с 12.12.2011
Offline
24
#40

Гонять по всем новостям конечно же геморойно, как вариант посмотрите в сторону функции PHP из коробки:

http://php.net/similar_text

---------- Добавлено 10.01.2015 в 02:57 ----------

Еще есть статья на хабре об алгоритме поиска не явных дубликатов:

http://habrahabr.ru/post/65944/

---------- Добавлено 10.01.2015 в 03:02 ----------

Есть вариант еще круче, он уже без PHP совсем:

http://stackoverflow.com/questions/9870913/php-mysql-select-where-similar-textx

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