Forum Webscript.Ru
Программирование => Perl => Тема начата: kosm от 22 Августа 2003, 14:31:37
-
Отцы, братья! Помогите плиз советом/идеей, как прошерстить БД по одному полю?
Задача в следующем.
1.Есть некий список (строки) в массиве, порядка 2000 записей.
2.Есть таблица на mysql, тоже со списком строк, порядка 20000 записей.
3.Есть ф-ция на перле которая сравнивает две строки.
Как найти строки в БД сверенные по моей ф-ции?
Какие есть варианты?
1.Формировать запрос к БД по каждой записи массива(1)?
2.Загонять через DBI данные таблицы БД в массив и там шерстить?
Что посоветуете?
СПАСИБО!
-
Все зависит от того что тебе далее нужно будет с ними делать.
Но второй вариант выглядит повкуснее. Явно повкуснее...
-
kosm
а ты уверен, что это сравнение (которое делает перл-функция) нельзя реализовать через SQL-операторы ?
-
Макс
Думаю что да : http://forums.webscript.ru/showthread.php?s=&threadid=13413&msgnum=4
Хотя, пусть ответчик подойдет...
-
NeoNox
Найденные значения нужно будет проапдейтить в БД, вернее другое поле той же записи. Поэтому в массиве будут значения поля ID.
С массивом мне тоже как-то больше по-душе. Единственное смущает объем и сам процесс поиска в массиве. Объем 20000 записей в памяти не многовато? А с поиском вообще не понятно. Чисто перебором искать?
Макс
Смысл моей ф-ции в том, чтобы сравнить два предложения, при чем порядок слов и знаки припинания не беруться в учет.
Т.е.: МАША ЕЛА КАШУ! == МАШКА ЕЛА КАШКУ == ЕЛА КАШУ - МАША будет считаться идентичными предложениями. Такое навряд ли возможно реализовать чисто на sql :( К тому же тут еще и кириллица.
Если такое возможно - давай, излагай. Рассматриваю все варианты.
Останется самый быстрый.
-
NeoNox
Точно, я это был :)) Спасибо! Твоя идея с хешами + soundex вроде как решили мою задачу. Ф-ция работает. Но теперь надо ведь ее на 2000 записей (массив) против 20000 (БД) натравить.
Думаешь можно реализовать алгоритм ф-ции на SQL?
PS: Могу привести текст ф-ции, если действительно это реально на SQL перенести.
СПАСИБО ЗА ПОМОЩЬ! ОЧЕНЬ ВЫРУЧАЕТЕ!