SQL: индексы и поиск по "частичному включению" @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 12 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Kwazar
новый человек
0
Сообщения: 135
Зарегистрирован: 18.09.02
Откуда: Волгоград
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 08:21:00 
Заранее прошу прощения за достаточно специфичные вопросы по программированию заданные на дизайнерском форуме. Однако передо мною стоит сейчас достаточно трудоемкая задача, которая хоть и выполнима, но имеет несколько путей решения. Осталось определиться и разобраться в них.

Вопрос 1
для использования поиска по сайтам (типа ya.ru, но попроще), должна быть достаточно большая база данных. Как вы считаете, надо или использовать индексы, т.к. хоть и пишут, что они на порядок ускоряют поиск в ней, но при больших объемах данных, говорят, что выборка данных будет происходить еще дольше, чем без использования индексов.
Поиск будет происходить по включению, т.е. с использованием like, который сам по себе немного подормаживает. Если индексы все же полезны то какого типа их луше использовать?
В+ деревья? Объедененные индексы? (битовые индексы точно не подойдут - столбцы будут иметь явно не малую мощность).

Вопрос 2
существуют ли стандартные методы в SQL92 или SQL99, позволяющие всти поиск по "частичному включению". Т.е. при запросе на слово "мыша" , будут найденны слова: "миша", "мышь", … (наподобе ворд проверяет синтаксические ошибки). Существуют ли какие-нибудь оступные к просмотру алгоритмы для этого?

Заранее спасибо
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 09:29:00 
сразу хочу оговорится, что не являюсь гуру в построении поисковых систем. все нижеизложенное является моими собственными размышлениями о механизах поиска и не претендует на истину в последней инстанции. [img]genius.gif[/img] [img]images/smiles/icon_wink.gif[/img]
если делать действительно "правильный" поиск, то не будет ни первого ни второго вопроса. мне кажется, что алгоритм работы поиска должен быть следующим:
1. Поиск по словарю словоформ - для определения исходного слова. обычно используют словарь Лебедева.
2. Поиск в таблице индексов исходного слова.
Так что про like можно забыть.
На сегодняшний день, на сколько я в курсе, в бд не встраиваются словари, так что про автоматический подбор слов можно забыть.
Kwazar
новый человек
0
Сообщения: 135
Зарегистрирован: 18.09.02
Откуда: Волгоград
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 09:45:00 
Long, благодарю за совет, но мне этот вариант не подходит.
Говорил сейчас с заказчиками - они хотят использовать Oracle, следовательно про like действительно можно забыть [img]images/smiles/icon_smile.gif[/img]
Ранее оговаривалась БД MySQL (я их долго долбил, что не стоит использовать эту фигню).
Далее. Поиск по словарю словоформ. Уже готов мой собственный модуль под perl для этого. Так что на Лебедева можно забить. Но первый вопрос все же актуален.
Поиск по таблице индесксов исходного слова. Дык даже Oracle с его удобствами, не входящими с стандарт SQL 92 и SQL 99 будет тормозить при большом количестве данных. Хотя я и сделал алгоритм сортировки слов про определленным признакам, который на порядок ускоряет поиск - этого все равно будет не достаточно.
Так что вопрос остается открытым [img]images/smiles/icon_smile.gif[/img]

Насчет второго вопроса - ладно, оюбойдусь пока без этой функции. Буду думать позже...
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 10:35:00 
Kwazar
я с ораклом близко не сталкивался пока (но увы в ближайшее время придется [img]weep.gif[/img] ) поэтому и возник вопрос - он не поддерживает like? [img]images/smiles/icon_eek.gif[/img]
а твой модуль ищет не по словарю? [img]spy.gif[/img]
Kwazar
новый человек
0
Сообщения: 135
Зарегистрирован: 18.09.02
Откуда: Волгоград
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 10:50:00 
Long, нет, вы меня не правильно поняли. Он подерживат полностью стандарт SQL. Плюс еще масса приятностей, благодоря которым прото грез не отказаться от Like, т.е. есть более быстрые вещи [img]images/smiles/icon_wink.gif[/img]
Так что нет поводов для паники
Kwazar
новый человек
0
Сообщения: 135
Зарегистрирован: 18.09.02
Откуда: Волгоград
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 10:52:00 
а твой модуль ищет не по словарю?
[img]images/smiles/icon_biggrin.gif[/img] Нет, он использует правила русского языка (поиск руссоязычный). Так гораздо удобнее и быстрее (меньше данных обрабатываются)
Kwazar
новый человек
0
Сообщения: 135
Зарегистрирован: 18.09.02
Откуда: Волгоград
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 11:09:00 
Long, кстати, не стоит так боятся Оракла. Это великолепная БД [img]images/smiles/icon_smile.gif[/img]
Original Demon Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 13:20:00 
Kwazar подробней про запрос, иначе не совсем понятно, что собственно нужно
Kwazar
новый человек
0
Сообщения: 135
Зарегистрирован: 18.09.02
Откуда: Волгоград
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 13:33:00 
Я сам не понял вашего вопроса.
Короче есть большая БД. Таблица имет очень большую мощьность (т.е. в них нету маленького количества шаблонных значений). Мне нужнно ускорить по ней поиск и выборку строк. Все просто. Проблеммы с местом на диске нет. Для ускорения поиска я иногда использую индексы. Но сейчас стоит ли их использовать. И какие лучше, именно для этой задачи?
Original Demon Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 14:07:00 
ладно, я все равно не понял сути вопроса. вот ссылка, вдруг поможет - http://www.citforum.ru/database/osbd/glava_39.shtml
Kwazar
новый человек
0
Сообщения: 135
Зарегистрирован: 18.09.02
Откуда: Волгоград
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 15 Ноябрь 2002, 14:13:00 
Original Demon, спасибо, но это я и так знаю...
cobalt
новый человек
0
Сообщения: 9
Зарегистрирован: 01.11.02
Откуда: Москворечье
Заголовок сообщения: SQL: индексы и поиск по "частичному включению"
Сообщение Добавлено: 16 Ноябрь 2002, 20:34:00 
индексы значительно ускоряют запрос на выборку. Поэтому их следует обязательно использовать. Индексировать лучше по столбцу, который используется в условиях отбора.
обычно для поиска используются две таблицы - первая содержит все слова на сайте, а вторая все ссылки на эти слова но всех страницах (или по другому - описывает связь многие-ко-многим). При запросе на поиск происходит сравнение через like в первой таблице и выбор ссылок из второй, а результаты выборки сортируются по количеству упоминаний этого слова в этом материале через count() и group by. Т. ч. вверху будут страницы, где искомое слово встречается чаще.
Что же касается "частичного включения" а также окончаний прилагательных и существительных русского языка, чтобы на запрос синий выдавался ответ и с синяя, и синие, и т.д. то здесь надо использовать рег.выражения.
Ну и обновление этих таблиц лучше делать скриптом на cron'е - чтоб всегда были актуальны.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 12 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100