Сравнение записей в нескольких таблицах

pyhbka

Новичок
Вобщем такая ситуация. Повесили на меня проектик один...

Дано ндцать таблиц с кучей записей (пока порядка 30к).

есть таблички вида field_data_field_*fieldName* (табличка каждого конкретного input поля)
и есть таблица taxonomy_term_data (справочник для некоторых полей, в нём хранится всего 1300 записей).

Задача такая, надо пробежаться по всем табличкам и найти похожие друг на друга записи.
А уже на основе результата, необходимо будет формировать список вхождений для каждого документа.

Вот и ломаю голову, с какой стороны лучше подойти к этому вопросу ?

Подскажите, ну или ткните в похожий пример.

Заранее спасибо.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Задача такая, надо пробежаться по всем табличкам и найти похожие друг на друга записи.
Как определяется "похожесть"?

А уже на основе результата, необходимо будет формировать список вхождений для каждого документа.
Что такое "документ"? "Список вхождений" чего?

Вот и ломаю голову, с какой стороны лучше подойти к этому вопросу ?
С ответов на уточняющие вопросы, для начала.
 

pyhbka

Новичок
Проще говоря, в базу добавляются различные документы, название, описание, категория (всего их 3).
+ для каждой конкретной категории есть определенный набор input полей

Архитектура базы там дикая.
Под каждое input поле создается отдельная табличка.
Поле в котором хранятся значения, называются зачем то по аналогии с названием таблички + приписка value ... аля fieds_data_myfileName_value

Похожесть... ох. тут сложно.
Допустим в одной категории в поле "производитель" стоит ООО "Рога и копыта", в другой категории стоит то же ООО "Рога и копыта" но с припиской, допустим вот так: ООО "Рога и копыта" г. Москва

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

Я хочу создать новую табличку, и писать в неё соотвествия по каждому вхождению. ID'ники и процент схожести (релевантности).
И пока я просто не понимаю каким образом мне найти схожие документы средствами самой бд. использовать тот же php думается мне в данной ситуации не логично.
т.е. как определить что ООО "Рога и копыта" = ООО "Рога и копыта" г. Москва

Ествественно вся эта операция будет производиться не в реальном времени, а по крону.
Как - то так.

видимо про поля и прочую лабуду можно было и не писать.
У меня уже голова просто ничего не соображает ...
 

prolis

Новичок
Можно так:
1. С помощью регулярных выражений удалить в новом поле информационный мусор: ООО "Рога и копыта" г. Москва => РОГА И КОПЫТА (все что в кавычках), можно за несколько проходов, на реальных данных будет видно
2. По полю с чистыми данными пройтись soundex (если он нормально с кириллицей работает)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Похожесть... ох. тут сложно.
Допустим в одной категории в поле "производитель" стоит ООО "Рога и копыта", в другой категории стоит то же ООО "Рога и копыта" но с припиской, допустим вот так: ООО "Рога и копыта" г. Москва
Рекомендую погонять pg_trgm

Я хочу создать новую табличку, и писать в неё соотвествия по каждому вхождению. ID'ники и процент схожести (релевантности).
Надеюсь, понятно, что в этой табличке будет N^2 записей, где N --- кол-во документов? И считаться она будет весьма небыстро.
 

pyhbka

Новичок
Можно так:
1. С помощью регулярных выражений удалить в новом поле информационный мусор: ООО "Рога и копыта" г. Москва => РОГА И КОПЫТА (все что в кавычках), можно за несколько проходов, на реальных данных будет видно
2. По полю с чистыми данными пройтись soundex (если он нормально с кириллицей работает)
по 1 пункту можно сделать только удаление мусора всякого. ибо ООО "рога и копыта" я привел как пример, там формат совершенно разный.

Рекомендую погонять pg_trgm
Надеюсь, понятно, что в этой табличке будет N^2 записей, где N --- кол-во документов? И считаться она будет весьма небыстро.
Ну я хотел сделать так: записать все результаты вхождений в массив и его уже в базу, чтоб кучу записей не плодить.

Всем спасибо за инфу, пойду изучать.
 

Redjik

Джедай-мастер
Я бы начал плясать от "нечеткого сравнения строк" и смотреть смогу ли я к этому делу сфинкс припахать =)
 

pyhbka

Новичок
Я бы начал плясать от "нечеткого сравнения строк" и смотреть смогу ли я к этому делу сфинкс припахать =)
сфинкс тут вообще не уперся...
для меня главный вопрос на данный момент реализовать D-M Soundex непосредственно в самой бд.
примеры кода на php и js нашел, а как вкрячить в бд пока не понимаю. простой soundex для кирилицы не подходит.

Ещё как вариант попробывать Шингл использовать, опять же, как в бд вкрячить... ох.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
для меня главный вопрос на данный момент реализовать D-M Soundex непосредственно в самой бд.
примеры кода на php и js нашел, а как вкрячить в бд пока не понимаю.
PLV8, и хреначить прям на жаваскрипте? ;
 
Сверху