Полнотекстовый поиск с помощью Firebird и Delphi
-
11-09-2019 - |
Вопрос
Я изучаю возможность реализации полнотекстового поиска в нашей базе данных Firebird.Нашими требованиями являются:
- Каждое поле в нескольких таблицах должно быть проиндексировано.Когда результат будет найден, мы сможем узнать исходную таблицу.
- Индекс может храниться в базе данных или в файловой системе.
- Результаты поиска (первичные ключи BigInt) должны использоваться для объединения с исходными записями в базе данных для отображения записей в таблице.
Кто-нибудь может порекомендовать достойный способ достичь того, что нам нужно?Я рассматривал возможность какой-то интеграции DotLucence в Delphi, но на самом деле не могу найти много информации о том, как это сделать.
Решение
Вот несколько ресурсов, которые вам следует рассмотреть:
- Сфинкс очень мощная и популярная бесплатная полнотекстовая поисковая система с открытым исходным кодом.
- Текстовое решение Полнотекстовый поиск по Interbase и Firebird.
- Объекты IBObjects Модуль полнотекстового поиска ("Нечеткий поиск"), полностью рабочий модуль, который может быть использован для настройки ваших поисковых индексов или в качестве модели для вашей собственной пользовательской реализации.
- Рубикон это надстройка Delphi, которая позволяет вам использовать возможности полнотекстового поиска в ваших приложениях.
- Полнотекстовый поиск Firebird SQL От Дэна Летеки в CodeProject с использованием полнотекстовой поисковой системы DotLucene.
- Mutis является портом Delphi поисковой системы Lucene.Предоставьте гибкий API для индексации, каталога и поиска текстовой информации с высокой производительностью.Отлично подходит для внедрения пользовательских поисковых систем, исследований, поиска текста, интеллектуального анализа данных и многого другого.
Существует вилка Жар - птицы код, созданный компанией под названием Red Soft.Он лицензирован по той же лицензии, что и Firebird, поэтому вы можете ознакомиться с их версией, которая может поддерживать полнотекстовый поиск с использованием движка Lucene engine через интерфейсы JavaVM.
Вы также можете прочитать статью под названием "Полнотекстовый поиск в Firebird без полнотекстовой поисковой системы" Бьорна Реймера и Дирка Баумайстера, представленный на 4-й конференции Firebird.
Другие советы
Я думаю, у вас возникнут проблемы с требованием 2:Индекс может храниться в базе данных или в файловой системе.Большинство служб индексирования создают свой собственный индексный файл, в котором данные хранятся высокооптимизированным способом.Если вы действительно этого хотите, возможно, можно загрузить и сохранить индекс в одно blob-поле, но я действительно не вижу причины для этого.