2009-03-27 11 views
10

Estamos creando una fuente abierta Twitter client y estamos buscando una base de datos embebida con la menor huella de posible que trabaja con Delphi y que se presta bien a búsqueda de texto completo (Sé que eso no va bien con una huella pequeña). Idealmente, también debería ser libre o de código abierto (exigente, lo sé).búsqueda de texto completo con la base de datos incrustada en Delphi

Me estoy inclinando hacia SQLite, pero no lo he usado antes y no sé si es compatible con la búsqueda de texto completo, o qué tan bien funciona con Delphi. He usado DBISAM antes y está incrustado con la búsqueda de texto completo, pero no gratis. Firebird es otra opción que consideramos.

Puede haber una combinación que lo haga funcionar. ¿Qué usarías, y cómo califica para 1) Huella, 2) Búsqueda de texto completo, 3) Fuente gratuita/abierta.

ACTUALIZACIÓN: Gracias a todos por sus sugerencias. Tantas buenas opciones para elegir.

+0

1 Estoy muy interesado en lo que sale. –

+0

Escuché el podcast, me gustaría ir con firebird, y tal vez un lucene (el lucene de Java, o dotlucene) como un FTS (Delphi puede vincular a cualquier cosa). Firebird permitiría alguien para usar el db completo o incrustado (fb completo con múltiples usuarios puede ser interesante ...) –

Respuesta

8

He tenido mucho éxito usando DiSQLite. Tiene soporte FTS y un montón de otras características. Tienen una versión gratuita y una versión profesional. Creo que la versión gratuita también lo hace FTS. He intentado muchas de las implementaciones SQLite para Delphi y esta es la mejor que he visto. Se compila directamente en su aplicación, por lo que no hay archivos DLL externos.

He visto muchas bibliotecas gratuitas para bases de datos incrustadas en Delphi y muchas ya no son compatibles, nunca se lanzaron, o solo funcionan en Delphi5.

+0

DiSQLite se ve muy bien. ¡Gracias! –

+0

¿Cómo se maneja la búsqueda insensible a mayúsculas/minúsculas en DISQLIte (usando FTS o LIKE)? SQLIte y DISQLite manejan búsquedas que no distinguen entre mayúsculas y minúsculas solo para idiomas de Europa occidental, y solo admiten búsquedas sensibles a mayúsculas y minúsculas para otras páginas de códigos. En la práctica del mundo real, las búsquedas con distinción entre mayúsculas y minúsculas no son muy útiles. –

1

¿Por qué necesitarías una búsqueda de texto completo para esto? No uso Twitter, pero creo que los mensajes de Twitter tienen un máximo de 140 caracteres. Estos cabrían en un campo varchar. No necesita una búsqueda de texto completo para encontrar algo en ese campo.

+0

Necesita FTS si desea admitir consultas al estilo de Google, como cercanía de palabra, derivación, etc. –

+0

ah, cierto. Estaba pensando en búsquedas simples de palabras. – Birger

+1

Más indexación en todos los las palabras de forma independiente acelera el proceso de búsqueda en lugar de indexar en todo el tweet. –

0

También hay DotLucene, que requiere que se instale .NET framework, pero se puede cargar fácilmente a través de .net com apis. Es ideal para buscar y tiene un formato de consulta que es común para la mayoría de los motores de búsqueda.

2

Hemos integrado DotLucene en una de nuestras aplicaciones internas Delphi, utilizando Hydra (Mike hizo el trabajo en eso, en aquel entonces); si eso es una opción que queremos seguir aquí, estoy seguro de que podemos extraer de eso y que sea reutilizable para este proyecto

3

Sé pájaro de fuego tiene la sphinx complemento para la búsqueda de texto completo (aunque según la existencia del sitio es " lejos de ser una "búsqueda de texto completo" real), es una fuente gratuita/abierta, pero no puedo encontrar ninguna información para decir si funciona con la versión integrada de firebird.

1

Sugeriría que DBISAM, o ahora probablemente su más nuevo ElevateDB, se debe considerar seriamente. De su experiencia previa, espero que sepa que no agrega mucho tamaño a su ejecutable, es una solución basada en Delphi razonablemente rápida, confiable y perfecta, y tiene un excelente soporte. Con los años, su dialecto SQL se ha perfeccionado, por lo que ahora es muy agradable con un alto grado de cumplimiento ANSI SQL-2003. DBISAM/ElevateDB es como usted nota no de código abierto, pero el costo de la licencia es por desarrollador solamente (no por despliegue) así que si solo hay unos pocos desarrolladores involucrados, el costo es (en mi opinión) insignificante.El costo de la licencia es especialmente razonable si se tiene en cuenta el nivel de soporte y capacidad de respuesta que se obtiene en los grupos de noticias DBISAM/Elevatesoft, donde el desarrollador/propietario principal (Tim Young) participa activamente respondiendo preguntas y resolviendo problemas. Además del costo de una solución patentada, también existe la preocupación de si la empresa sobrevivirá y si el producto continuará desarrollándose y admitiéndose en el futuro. Eso es algo que tiene que sopesar, pero el desarrollo parece tan fuerte como siempre. Tienen proveedores .NET para sus bases de datos, y admiten el desarrollo multiplataforma con FreePascal/Lazarus.

Una ventaja de la búsqueda de texto completo de DBISAM es que está estrechamente integrada en el SQL. Es decir, puede emitir una sola instrucción SELECT que combine directamente criterios WHERE ordinarios en algunos campos con criterios de búsqueda de texto completo en otros. Dependiendo de sus necesidades, esta es una buena característica que hace que sea realmente simple y rápido hacer algunas cosas que requerirían más trabajo usando una solución de texto completo diferente. Creo que la mayoría de las soluciones complementarias, como Lucene y otras que pueden usarse con Firebird, no se integran tan de cerca con SQL normal y lo restringen a recuperar un conjunto de registros con criterios de texto completo solamente. Algo parecido al complemento patentado de Textolution para Firebird (http://www.textolution.com/ftsib_example.asp) parece que podría acomodar la construcción de una consulta compleja única (anidada) que aplicaría criterios de texto completo y regular, pero DBISAM lo hace de forma más elegante. Y agregar un complemento propietario a un tipo de fuente abierta db, de alguna manera, derrota el propósito de ir a la fuente abierta.

Una de las deficiencias de la búsqueda de texto completo de DBISAM/ElevateDB, creo, es que solo admite el uso de las condiciones 'Y' y 'O', no tiene ninguna búsqueda de proximidad.

Me di cuenta de que hay una solución de texto completo para SQLite, http://www.sqlite.org/cvstrac/wiki?p=FullTextIndex. Nunca he usado SQLite, pero sé que mucha gente lo ama. Un área donde estoy bastante seguro de que DBISAM/Elevatesoft tiene una gran ventaja es en aplicaciones de múltiples usuarios donde se requiere una funcionalidad de bloqueo robusta, aunque eso no necesariamente tiene ningún peso para la aplicación de escritorio de un solo usuario.

2

Continuar con SQLite. Hay muchos componentes de sqlite GRATUITOS para Delphi. Algunos de ellos han dejado de ser proyectos activos. Pero uno de los componentes de la nota es ZeosDB. ZeosDB se mantiene activamente y su soporte sqlite también es perfecto. En caso de que necesite otro soporte de motor DB, ZeosDB es la respuesta nuevamente (es compatible con MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle y SQLite).

1

Me gustaría ir con SQLite usando Aducom componentes SQLite, que son fáciles de trabajar con SQLite que DiSQLite, libre y trabajo como componentes TDataset, votaría para SQLite porque:

  1. Es muy rápido y compacto base de datos.
  2. Tamaño muy pequeño, alrededor de 200kb Dll.
  3. Se puede vincular estático cuando se usa con componentes de Aducom, por lo que no hay necesidad de distribuir el dll.
  4. Tiene soporte integrado para búsqueda de texto completo.
  5. Se usa ampliamente y se usa en muchas aplicaciones comerciales y gratuitas como almacenamiento externo.
  6. Tiene la mayoría de SQL estándar, por lo que la mayor parte de su conocimiento en sql se utilizará.
1

Sqlite es prácticamente solo conexión de usuario único/solo. Hacer una actualización bloquea la base de datos completa. Se trata de esto estableciendo un valor de tiempo de espera para que otras conexiones esperen (el valor predeterminado no es el tiempo de espera). El acceso de múltiples usuarios puede volverse muy lento y dar tiempo de espera frecuente dependiendo del valor que use.

He usado los componentes de Asqlite en http://www.aducom.com/. Gratis y de código abierto. Actualmente no es compatible con d2009 por apariencia, pero está en desarrollo. Hay varios otros conjuntos de componentes también, pero no he usado ningún otro.

Puede agregar la búsqueda de texto completo a cualquier aplicación delphi usando Rubicon (ahora bajo nueva administración en http://www.href.com/rubicon). Sin embargo, esto no es libre :(

-1

DBISAM todo el camino. Obras,, empotradas, indexación de texto completo muy sólido funciona muy bien (extensa experiencia personal!)

ElevateDB es prob también grande, pero no tengo experiencia directa con ella.

4

Sybase Advantage Database Server tiene un motor de servidor local libre de regalías (multi-hilo y el bloqueo a nivel de registro), grandes componentes descendientes Delphi TDataSet (código fuente incluido), y un gran motor de búsqueda de texto completo.

Advantage la búsqueda de texto completo admite los operadores AND, OR, NOT y NEAR. proporciona funciones escalares SCORE y SCOREDISTINCT que devuelven el recuento total de todas las instancias de palabras en la condición de búsqueda.

Los índices de texto completo de Advantage se mantienen en el tiempo de actualización de registros, lo que significa que no requieren reconstrucciones. Los índices están en un formato comprimido; por lo tanto, el tamaño del índice real puede ser mucho más pequeño que los datos físicos. Es posible realizar búsquedas de texto completo en datos no indexados, pero esto requiere una búsqueda física de los datos del registro y puede ser mucho más lento. Las búsquedas indexadas usan filtros de mapa de bits para un rendimiento óptimo.

La ayuda en línea tiene todos los detalles en cuanto a opciones de indexación, etc .:

http://tinyurl.com/ctjoqg

0

tengo una solución semi-Delphi trabajar aquí: http://sourceforge.net/projects/mutis/, un puerto para Delphi de Lucene.

El mayority de que funcione bien, pero unfortunally se basó en la muerte aplicación Delphi.NET trabajo de manera Requiere para actualizar a un nativo (sí, fue un gran error tomar la ruta .NET :()

Cuestiones relacionadas