Pregunta

Estamos creando un código abierto cliente de Twitter y están en busca de una base de datos incrustada con el huella más pequeña posible que funciona con Delphi y que se presta bien a búsqueda de texto completo (sé que doesn' t ir con pequeña huella muy bien). Idealmente, debería ser libre o de código abierto también (exigiendo lo sé).

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

Puede haber una combinación que hace de este trabajo. ¿Qué le utilizar, y cómo se calificaría para 1) Huella, 2) la búsqueda de texto completo, 3) Libre fuente / Open.

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

¿Fue útil?

Solución

He tenido mucho éxito utilizando 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 FTS también. He intentado muchas de las implementaciones de SQLite para Delphi y este es el mejor que he visto. Se compila directamente en su aplicación de modo que no hay archivos DLL externa.

He mirado en muchas de las bibliotecas libres por ahí para bases de datos integradas en Delphi y muchos no reciben soporte, nunca nos libera, o sólo funcionan en Delphi5.

Otros consejos

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

Ventaja de búsqueda de texto completo es compatible con AND, OR, NOT y operadores próximo. También proporciona la ventaja de SCORE y SCOREDISTINCT funciones escalares que devuelven el recuento total de todas las instancias de las palabras en la condición de búsqueda.

Advantage índices de texto completo se mantienen en registro de tiempo de actualización 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 los datos no indexados, pero esto requiere un registro físico de los datos de registro y puede ser mucho más lento. búsquedas indexadas utilizan 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

Yo sé pájaro de fuego tiene la esfinge complemento para la plena Búsqueda en el documento (aunque no de acuerdo con el sitio es 'lejos de 'búsqueda de texto completo' real'), su fuente libre / abierto pero no puedo encontrar ninguna información para decir si funciona con la versión incorporada de pájaro de fuego.

Para Firebird búsqueda de texto completo vistazo a: http://www.firebirdfaq.org/faq328/

Leonardo.

Hemos integrado DotLucene en una de nuestras aplicaciones internas basadas en Delphi, utilizando Hydra (Mike hizo el trabajo en el que, en ese 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

Vaya por delante con SQLite . Hay una gran cantidad de componentes sqlite gratis para Delphi. Algunos de ellos han dejado de ser los proyectos activos. Pero uno de los componentes de la nota es ZeosDB . ZeosDB se mantiene activa y su apoyo SQLite es perfecto también. En caso de que necesite otro tipo de apoyo del motor DB, ZeosDB es la respuesta de nuevo (que soporta MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle y SQLite).

NexusDB tiene una rel="nofollow libre versión incrustada y por supuesto que es un producto nativo de Delphi.

He aquí una descripción de lo que es texto completo aplicación de búsqueda .

Me gustaría sugerir que DBISAM, o ahora, probablemente, su más reciente ElevateDB, se debe considerar fuertemente. A partir de su experiencia previa espero que usted sabe que no añade mucho al tamaño de su ejecutable, es una solución razonablemente rápida, fiable, perfecta basada en Delphi, y tiene un excelente soporte. Con los años su dialecto SQL ha sido refinado por lo que ahora es muy agradable, con alto grado de ANSI SQL-2003 cumplimiento.

DBISAM / ElevateDB es como se nota no es de código abierto, pero el costo es de licencia por desarrollador única (no por el despliegue) por lo que si hay sólo unos pocos desarrolladores involucrados es el costo (en mi opinión) insignificante. costo de licencias es especialmente razonable si tenemos en cuenta el nivel de apoyo y capacidad de respuesta se obtiene en DBISAM / grupos de noticias Elevatesoft, donde el principal promotor / propietario (Tim Young) participa activamente respondiendo preguntas y resolver problemas. Aparte de costo de una solución propietaria, hay, por supuesto, también la preocupación sobre si el negocio va a sobrevivir y el producto seguirá siendo desarrollado y apoyado en el futuro. Eso es algo que hay que sopesar por sí mismo, pero el desarrollo parece más fuerte que nunca. Ellos tienen los proveedores de .NET por sus db, y apoyar el desarrollo multiplataforma con FreePascal / Lázaro.

Uno más a la búsqueda de texto completo de DBISAM es que está estrechamente integrado en el SQL. Es decir, puede emitir una única instrucción SELECT que se combina directamente ordinaria donde los criterios acerca de algunos campos con criterios de búsqueda de texto completo sobre otros. Dependiendo de sus necesidades, esto es una buena característica que hace que sea muy simple y rápido de hacer algunas cosas que tendrían más trabajo utilizando una solución texto completo diferente. Creo que la mayoría complemento soluciones, como Lucene y otros que podrían utilizarse con Firebird, no integrar como estrechamente con SQL regular y restringir a recuperar un conjunto de registros con único criterio de texto completo. Algo así como propietaria complemento de Textolution para Firebird ( http://www.textolution.com/ftsib_example.asp ) parece que podría dar cabida a la construcción de consulta único complejo (anidada) que se aplicaría criterios tanto regulares como texto completo, pero DBISAM lo hace más elegante. Y la adición de una propiedad de complemento a una fuente db clase abierta de derrotas el propósito de ir de código abierto, de todos modos.

Uno de los defectos de búsqueda de texto completo DBISAM / de ElevateDB, creo, es que se admite sólo uso de 'Y' y 'o' condiciones, no tiene ninguna búsqueda de proximidad.

Me he dado cuenta de que existe una solución de texto completo para SQLite, http: // www. sqlite.org/cvstrac/wiki?p=FullTextIndex. No he utilizado nunca SQLite, pero sé que mucha gente le encanta. Un área en la que estoy bastante seguro de DBISAM / Elevatesoft tiene gran ventaja es en aplicaciones multiusuario donde se requiere la funcionalidad de bloqueo robusta, aunque eso no necesariamente llevar ningún peso en absoluto para la aplicación de escritorio de usuario único.

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

  1. Es muy rápido y base de datos compacta.
  2. Ocupa muy poco espacio, a la vuelta de DLL de 200kb.
  3. Se puede vincularse estática cuando se utiliza con componentes Aducom, por lo que no hay necesidad de distribuir el DLL.
  4. Se ha construido en apoyo a la búsqueda de texto completo.
  5. Es ampliamente utilizado y se utiliza en muchas aplicaciones libres y comerciales como el almacenamiento externo.
  6. Tiene la mayoría de SQL estándar, por lo que se utilizará la mayor parte de sus conocimientos en SQL.

SQLite es más o menos único usuario / sola única conexión. Haciendo una actualización encierra toda la base de datos. A lidiar con esto estableciendo un valor de tiempo de espera para otras conexiones de espera (por defecto es sin tiempo de espera). acceso multi-usuario puede llegar a ser muy lento y / o dar tiempo de espera frecuentes dependiendo de qué valor se utiliza.

he utilizado los componentes Asqlite de http://www.aducom.com/ . libre y de código abierto. Actualmente no es compatible con D2009 por el aspecto, sino que está en desarrollo. Hay una serie de otros conjuntos de componentes así, pero no he utilizado ningún otro.

Puede añadir búsqueda de texto completo a cualquier aplicación Delphi usando Rubicon (ahora bajo una nueva administración en http: // www .href.com / rubicon ). Sin embargo, esto no es gratuito: (

¿Por qué se necesita una búsqueda de texto completo para esto? Yo no uso de Twitter, bu Creo gorjeo mensajes son 140 caracteres como máximo? Estos cabrían en un campo varchar. No es necesario la búsqueda de texto completo para encontrar algo en este campo.

También hay DotLucene, lo que requiere el marco .NET para ser instalado, pero puede ser fácilmente cargado a través de la API de COM de .NET. Es ideal para la búsqueda y tiene un formato de consulta que es común a la mayoría de los motores de búsqueda.

Tengo una solución semi-trabajo Delphi 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 actualizar a un nativo (sí, fue un gran error tomar la ruta .NET :()

DBISAM todo el camino. Trabajos,, 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 él.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top