![]() |
|
Модераторы: LSD |
![]()
|
|
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Есть таблице, в ней более 20 000 всяких фирм. У каждой фирмы указаны ключевые слова, по котороым она может быть найдена.
Для одной фирмы, это: "ИЗДАНИЯ, ГАЗЕТЫ", у второй это "ЖУРНАЛЫ, ЛИСТОВКИ" и т.п. Нужно обеспечить нахождение эти обоих фирм по любому ключевому слову-синониму. Я вижу два решения: 1. Создать еще одну таблицу, в которой перечислить слова и их синонимы. А затем при вводе какого-либо слова в поиске производить поиск с использованием все синонимов(добавляя OR LIKE '%синоним%' ... ) 2. Пропарсить всю базу и к каждой фирме приписать синонимы для нее. Это заметно увеличит размер базы. Какой из этих способов лучше по производительности? Может быть есть еще способы? |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 3 Всего: 360 |
В принципе словарь(Thesaurus) ИМХО считается самым лучшим выходом. (Вариант 1)
|
|||
|
||||
| igon |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 3 Всего: 21 |
поиск с использованием ВСЕХ синонимов будет выглядеть так
ИМХО, возможен вариант с использованием понятия "идентификатор группы синонимов" - synonimGroupID (синонимы - по определению группа!). 1. Все термины распределяем по группам 2. Создаем справочник из двух полей
3. К рабочей таблице добавляем поле synonimGroupID 4. Создаем функцию getSynonimGroupID("термин_для_поиска"), возвращающую идентификатор группы. 5. Используя функцию, заполняем новое поле рабочей таблицы. Теперь запрос на поиск будет выглядеть примерно так
Задача усложнится, если а) термин может принадлежать к разным группам б) фирма имеет несколько ключевых слов - не синонимов В этом случае функция должна будет возвращать строку групповых идентификаторов с разделителями, а при поиске сравнивать строки на наличие общих synonimGroupID -------------------- Хотите поговорить об этом? |
||||||
|
|||||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |