![]() |
|
|
![]()
|
|
| GrigoriyFomin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 16.11.2010 Репутация: нет Всего: нет |
Добрый день, форумчане. Помогите решить проблему.
Движок - FireBird 2.5, делфи XE База содержит список документов, текст документа хранится в поле типа BLOB в кодировке UTF-8. Документов на данный момент почти 10000. Документы - разные приказы, распоряжения и проч. Размер файла базы-почти 700 мегабайт. А теперь соббсно вопрос - как сделать эффективный поиск по такой базе? Простой where DOCTEXT like '%ищу строку%' очень медленно отрабатывает, наверняка придется делать какой-то индекс, его ручками создавать и обрабатывать. Что есть на эту тему готового, дабы не изобретать велосипед или где про такое почитать? |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
А индексы по BLOB'у не создаются? Просто никогда не пробовал.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
в MySql есть так называемый полнотекстовый индекс, можно реализовать похожий механизм.
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
| GrigoriyFomin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 16.11.2010 Репутация: нет Всего: нет |
В оракле экспрессе тоже есть полнотекстовый поиск, причем там куча поддерживаемых типов файлов, но у меня - файрберд и нужно делать что-то с ним. Видел Сфинкси, мутекса и др, но какие-то они громоздкие, мне бы чего-то попроще, хотя бы принцип. Делал хранение дополнительно списка слов, но возникла задача искать не слова, а целые фразы.
|
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
принцип вроде такой
создаешь 2 таблицы в одной слова(или их хеш) в другой связка в каком блобе какое слово при поиске фразы искомую фразу разбиваешь на слова и ищешь все эти слова и что бы они были в 1 блобе -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
согласен вот нашел набор udf и процедур для организации "полнотекстового" поиска http://www.ibase.ru/download/textparser.zip -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| GrigoriyFomin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 16.11.2010 Репутация: нет Всего: нет |
Это я видел, но библиотека старая и по UTF-8 имхо не ищет
|
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
в крайнем случае там исходники есть и наверняка есть аналоги.... -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| GrigoriyFomin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 16.11.2010 Репутация: нет Всего: нет |
Вобщем, не стал заморачиваться с индексированием - создал еще одно поле, в котором хранится текст в верхнем регистре, без знаков препинания - самое то для поиска.
Вот, кому интересно, как очищаю текст от ненужнойстей
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |