2009-06-04 21 views
7

Estoy buscando implementar la búsqueda de texto completo en nuestra base de datos de Firebird. Nuestros requisitos son:Búsqueda de texto completo con Firebird y Delphi

  1. Cada campo en varias tablas debe estar indexado. Cuando se encuentre un resultado, deberíamos poder encontrar la tabla de origen.
  2. El índice se puede almacenar en la base de datos o en el sistema de archivos.
  3. Los resultados de la búsqueda (claves principales de BigInt) se deben usar para unirse a los registros originales en la base de datos para mostrar los registros en una tabla.

¿Alguien puede recomendar una forma decente para lograr lo que necesitamos? He analizado de alguna manera la integración de DotLucence en Delphi, pero realmente no puedo encontrar mucha información sobre cómo hacerlo.

Respuesta

12

Éstos son algunos recursos para que usted considere:

  • Sphinx muy potente y popular de código abierto motor de búsqueda libre de texto completo.
  • Textolution Búsqueda de texto completo para Interbase y Firebird.
  • IBObjects Módulo de búsqueda de texto completo ("Fuzzy Search"), un módulo totalmente funcional que se puede usar para configurar sus índices de búsqueda o como un modelo para su propia implementación personalizada.
  • Rubicon es un complemento de Delphi que le permite poner capacidades de búsqueda de texto completo en sus aplicaciones.
  • Fulltext Search for Firebird SQL By Dan Letecky en CodeProject utilizando el motor de búsqueda de texto DotLucene.
  • Mutis es un puerto Delphi del motor de búsqueda Lucene. Proporcione una API flexible para indexar, catalogar y buscar información basada en texto con gran rendimiento. Excelente para implementar motores de búsqueda personalizados, investigación, recuperación de texto, minería de datos y más.

Hay un código fork of Firebird hecho por una compañía llamada Red Soft. Tiene licencia bajo la misma licencia que Firebird, por lo que puede echarle un vistazo a su versión que puede admitir búsquedas de texto completo utilizando el motor Lucene a través de las interfaces JavaVM.

También puede leer un documento titulado "Full text search in Firebird without a full text search engine" por Bjoern Reimer y Dirk Baumeister, presentado en la 4ª Conferencia de Firebird.

+1

¡Gran lista, Jim! – gabr

+0

Gracias Jim. Miré a la mayoría de ellos, pero nunca encontré a Mutis. Estoy descargando ahora. Por cierto, ¿estás usando FTS en tu proyecto de Twitter? Si es así, ¿cuál elegiste? – norgepaul

+0

Actualmente estamos planeando usar DISQLite3, pero el cliente ha estado en espera. Delphi Live! y luego familia en la ciudad. Las cosas se están calmando y ahora tengo un momento crucial en el trabajo. –

-1

Creo que tendrá un problema con el requisito 2: el índice se puede almacenar en la base de datos o en el sistema de archivos. La mayoría de los servicios de indexación crean su propio archivo de índice que almacena datos de una manera altamente optimizada. Si realmente lo desea, tal vez sea posible cargar y guardar un índice en un solo campo de blob, pero realmente no veo una razón para esto.

+0

no queremos hacer un campo 'where' como '% something%' – jorgeu

Cuestiones relacionadas