Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Сравнение записей  [new]
Est_vopros
Member

Откуда:
Сообщений: 53
Доброго дня!

Товарищи, подскажите, пожалуйста, кто как ищет похожие записи?

Задача такая:
Есть запись типа:
Type sRec is record (nSumBuy  number,
                     nSumPay  number,
                     nRate      number,
                     dValue     date,
                     dTrade     date,
                     dMaturity date)
Полей может быть больше.

Есть таблица с аналогичными полями.

Задача – отсортировать записи в таблице по принципу максимальной похожести на имеющуюся запись.

Сам пока вижу только рутинное решение писать функцию сравнения и по ней сортировать.
Функция будет возвращать сумму от вычитаний соответствующих полей.

Вопрос: нет ли более изящного способа?
16 июн 08, 16:48    [5805637]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение записей  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Est_vopros
Доброго дня!

Товарищи, подскажите, пожалуйста, кто как ищет похожие записи?

Задача такая:
Есть запись типа:
Type sRec is record (nSumBuy  number,
                     nSumPay  number,
                     nRate      number,
                     dValue     date,
                     dTrade     date,
                     dMaturity date)
Полей может быть больше.

Есть таблица с аналогичными полями.

Задача – отсортировать записи в таблице по принципу максимальной похожести на имеющуюся запись.

Сам пока вижу только рутинное решение писать функцию сравнения и по ней сортировать.
Функция будет возвращать сумму от вычитаний соответствующих полей.

Вопрос: нет ли более изящного способа?

насчет изящного - не скажу, а вот более промышленный.. это да, таки да.
У оракла есть ряд монстрючих продуктов с группы ля-ля data hub(s), которые заточены
именно на это. Смысл (грубо) - мало найти (типа) 5 совпадений из (типа) 7 атрибутов.
Надо еще учитывать вес каждого атрибута ну и сравнивать их не как_есть, а (не?)много преобразовав (напр. аперкейс ну и т.п.)
16 июн 08, 19:39    [5806334]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение записей  [new]
Est_vopros
Member

Откуда:
Сообщений: 53
orawish СПАСИБО! Попробую покапать в эту сторону!
16 июн 08, 22:36    [5806676]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение записей  [new]
_kain_
Member

Откуда: Питер
Сообщений: 714
Est_vopros
Вопрос: нет ли более изящного способа?
Называется расстояние (метрика). Частный случай -- сумма квадратов разностей (сумма разностей не очень удачный вариант, может быть нулевой при значительном различии между записями). Частный случай -- сумма квадратов с весами. Ну и так далее. Я не уверен, что Вам нужны все навороты %%% data hubs -- если поля только "число" и "дата", то ничего сверхестественного больше не придумать.

А вот для поиска по словам придумано достаточно много, и, кстати, не знаю, локализована ли продуктовая линейка Oracle.
16 июн 08, 23:16    [5806753]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить