Полнотекстовый поиск с Firebird и Delphi

Я изучаю реализацию полнотекстового поиска в нашей базе данных Firebird. Наши требования:

  1. каждое поле в нескольких таблицах должно быть проиндексировано. Когда результат будет найден, мы сможем узнать исходную таблицу.
  2. индекс может храниться в базе данных или в файловой системе.
  3. Результаты поиска (первичные ключи 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, но я действительно не вижу причины для этого.