2009-06-04 1 views
7

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

  1. Каждое поле в нескольких таблицах должно быть проиндексировано. Когда результат будет найден, мы сможем узнать исходную таблицу.
  2. Индекс может храниться в базе данных или в файловой системе.
  3. Результаты поиска (первичные ключи BigInt) должны использоваться для объединения с исходными записями в базе данных для отображения записей в таблице.

Может ли кто-нибудь рекомендовать достойный способ достичь того, что нам нужно? Я посмотрел на то, как интегрировать DotLucence в Delphi, но не может найти очень много информации о том, как это сделать.

ответ

12

Вот несколько ресурсов для Вас, чтобы рассмотреть следующие вопросы:

  • Sphinx очень мощный и популярный бесплатный с открытым исходным кодом полнотекстового поиска двигателя.
  • Textolution Полный текст поиска для Interbase и Firebird.
  • IBObjects Модуль полнотекстового поиска («Нечеткий поиск»), полностью работающий модуль, который может использоваться для настройки ваших поисковых индексов или как модель для вашей собственной реализации.
  • Rubicon - это дополнение Delphi, которое позволяет вставлять возможности полного текстового поиска в ваши приложения.
  • Fulltext Search for Firebird SQL By Dan Letecky на CodeProject с использованием полнотекстовой поисковой системы DotLucene.
  • Mutis - это порт Delphi поисковой системы Lucene. Предоставляйте гибкий API для индексирования, каталога и поиска текстовой информации с большой производительностью. Excelent для реализации пользовательских поисковых систем, исследования, поиска текста, интеллектуального анализа данных и многое другое.

Существует код fork of Firebird, сделанный компанией Red Soft. Он лицензируется по той же лицензии, что и Firebird, поэтому вы можете взглянуть на свою версию, которая может поддерживать полнотекстовый поиск с использованием Lucene с помощью интерфейсов JavaVM.

Вы также можете прочитать статью под названием «Full text search in Firebird without a full text search engine» Бьорна Реймера и Дирка Баумейстера, представленную на 4-й конференции Firebird.

+1

Отличный список, Джим! – gabr

+0

Спасибо Джим. Я смотрел на большинство из них, но не нашел Мутиса. Сейчас я загружаю. Кстати, вы используете FTS в своем проекте Twitter? Если да, то что вы выбрали? – norgepaul

+0

В настоящее время мы планируем использовать DISQLite3, но клиент находится в режиме ожидания. Delphi Live! а затем семья в городе. Все успокаивается, и теперь у меня есть время на работе. –

-1

Я думаю, что у вас возникнет проблема с требованием 2: Индекс может быть сохранен в базе данных или в файловой системе. Большинство служб индексирования создают собственный индексный файл, который хранит данные с высокой степенью оптимизации. Если вы действительно этого хотите, возможно, можно загрузить и сохранить индекс в одно поле blob, но на самом деле я не вижу причины для этого.

+0

Мы не хотим делать 'where field like '% something%'' – jorgeu