Полнотекстовый поиск с Firebird и Delphi
Я изучаю реализацию полнотекстового поиска в нашей базе данных Firebird. Наши требования:
- каждое поле в нескольких таблицах должно быть проиндексировано. Когда результат будет найден, мы сможем узнать исходную таблицу.
- индекс может храниться в базе данных или в файловой системе.
- Результаты поиска (первичные ключи BigInt) должны использоваться для объединения с исходными записями в базе данных для отображения записей в таблица.
может ли кто-нибудь порекомендовать достойный способ достичь того, что нам нужно? Я просмотрел как-то интеграцию DotLucence в Delphi, но не могу найти много информации о том, как это сделать.
2 ответов
вот еще несколько ресурсов для вас, чтобы рассмотреть:
- Сфинкс очень мощный и популярный бесплатный полнотекстовый поиск с открытым исходным кодом.
- Textolution полнотекстовый поиск Interbase и Firebird.
- IBObjects модуль полнотекстового поиска ("нечеткий поиск"), полностью рабочий модуль, который можно использовать для настройки индексов поиска или в качестве модели для вашей собственной реализации.
- Рубикон - это надстройка Delphi, которая позволяет вам использовать возможности полнотекстового поиска в ваших приложениях.
- полнотекстовый поиск Firebird SQL по Dan Letecky на CodeProject с помощью полнотекстовой поисковой системы DotLucene.
- Мутис является портом Delphi поисковой системы Lucene. Обеспечьте гибкий API для индекса, каталога и поиска текстовой информации с большой производительностью. Отличном для реализации пользовательского поиска двигатели, исследования, извлечение текста, интеллектуальный анализ данных и многое другое.
есть вилка Жар-птицы код, сделанный компанией Red Soft. Он лицензирован под той же лицензией, что и Firebird, поэтому вы можете взглянуть на их версию, которая может поддерживать полнотекстовый поиск с помощью Lucene engine через интерфейсы JavaVM.
вы также можете прочитать статью под названием"полнотекстовый поиск в Firebird без полнотекстовой поисковой системы " by Bjoern Reimer and Dirk Баумайстер, представлен на 4-й конференции Firebird.
Я думаю, у вас будет проблема с требованием 2: индекс может быть сохранен в базе данных или в файловой системе. Большинство служб индексирования создают собственный индексный файл, который хранит данные оптимизированным способом. Если вы действительно хотите этого, возможно, можно загрузить и сохранить индекс в одно поле blob, но я действительно не вижу причины для этого.