Domanda

Stiamo creando un open source Client Twitter e sono alla ricerca di un DB incorporato con il ingombro minimo che funziona con Delphi e che si presta bene a ricerca full text (So che non va con la piccola orma molto bene).Idealmente, esso dovrebbe essere libero o open source troppo (esigente, lo so).

Io sono inclinato verso SQLite, ma non ho usato prima e non so se supporta la ricerca full text, o come funziona con Delphi.Ho usato DBISAM la prima è integrato con la ricerca full text, ma non gratuito. Firebird è un'altra opzione che abbiamo considerato.

Ci potrebbe essere una combinazione che fa di questo lavoro.Cosa vorresti usare, e come fa a votare per 1) Impronta, 2) ricerca Full-text, 3) Libero/Open source.

AGGIORNAMENTO: Grazie a tutti per i vostri suggerimenti.Tante buone scelte tra cui scegliere.

È stato utile?

Soluzione

Ho avuto un sacco di successo con DiSQLite . Ha il supporto FTS e una tonnellata di altre caratteristiche. Hanno una versione gratuita e una versione Professional. Credo che la versione gratuita fa FTS pure. Ho provato molte delle implementazioni di SQLite per Delphi e questo è il migliore che ho visto. Si compila direttamente nella tua applicazione in modo non vi sono DLL esterne.

Ho guardato un sacco di librerie libere là fuori per i database incorporati in Delphi e molti non sono supportati più, non è stato rilasciato, o funzionano solo in Delphi5.

Altri suggerimenti

Advantage Database Server ha un motore di server locale royalty free (multi-threaded e blocco a livello di record), grandi componenti Delphi TDataSet discendente (codice sorgente incluso), e una grande completo motore di ricerca.

Advantage ricerca a testo integrale supporta AND, OR, NOT, NEAR e gli operatori. Advantage offre anche funzioni scalari punteggio e SCOREDISTINCT che restituiscono il numero totale di tutte le istanze di parole nella condizione di ricerca.

Advantage indici full-text sono mantenute al tempo di aggiornamento di registrazione che significa che non richiedono alcuna ricostruzioni. Gli indici sono in un formato compresso; pertanto la dimensione dell'indice reale può essere molto più piccolo rispetto ai dati fisici. E 'possibile effettuare ricerche full-text su dati non indicizzati, ma questo richiede una ricerca fisica dei dati di registrazione e può essere molto più lento. ricerche indicizzate usano filtri bitmap per ottenere prestazioni ottimali.

La guida in linea ha tutti i dettagli per quanto riguarda le opzioni di indicizzazione, ecc .:

http://tinyurl.com/ctjoqg

So Firebird ha il sfinge add-on per la piena ricerca (anche se secondo c'è sito è 'lontano dalla vera e propria 'ricerca a testo integrale''), il suo libero / open source, ma non posso trovare tutte le informazioni per dire se funziona con la versione integrata di Firebird.

Per Firebird ricerca full-text un'occhiata a: http://www.firebirdfaq.org/faq328/

Leonardo.

Abbiamo integrato DotLucene in una delle nostre applicazioni interne Delphi-based, utilizzando Hydra (Mike ha fatto il lavoro su questo, allora); se questa è un'opzione che vogliamo perseguire qui, sono sicuro che possiamo estrarre e renderlo riutilizzabile per questo progetto

Vai avanti con SQLite . Ci sono un sacco di componenti SQLite GRATIS per Delphi. Alcuni di loro hanno cessato di essere progetti attivi. Ma una componente di nota è ZeosDB . ZeosDB è mantenuto attivamente e il suo supporto a SQLite è perfetto anche. Nel caso in cui avete bisogno di altro supporto motore DB, ZeosDB è ancora una volta la risposta (che supporta MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle e SQLite).

NexusDB ha un rel="nofollow libero incorporato versione e, naturalmente, è un prodotto nativo di Delphi.

Ecco una descrizione di esso è testo piena attuazione di ricerca .

Suggerisco che DBISAM, ora probabilmente il loro più recente ElevateDB, deve essere fortemente considerata.Dalla tua esperienza precedente mi aspettavo lo sai che non aggiunge molto di dimensioni per il vostro eseguibile, è ragionevolmente veloce, affidabile, perfetto Delphi a base di soluzione, e ha un eccellente supporto.Negli anni, il loro dialetto SQL è stato perfezionato in modo che ora è davvero bello, con alto grado di ANSI SQL-2003 conformità.

DBISAM/ElevateDB è come si nota non è open source, ma i costi di licenza per sviluppatori (non per la distribuzione), quindi se ci sono solo un paio di sviluppatori coinvolti il costo è (a mio parere) è trascurabile.Costi di licenza è particolarmente ragionevole se si considera il livello di supporto e di capacità di risposta si ottiene su di DBISAM/Elevatesoft newsgroup, dove il principale sviluppatore/proprietario (Tim Young) è attivamente coinvolto nel rispondere alle domande e risolvere i problemi.A parte il costo di una soluzione proprietaria, c'è anche, ovviamente, riguardano, oltre al fatto che l'azienda di sopravvivere e di prodotto continuerà ad essere sviluppato e supportato in futuro.Che è qualcosa che devi pesare per te, ma lo sviluppo sembra più forte che mai.Che hanno ottenuto .Fornitori della rete per la loro db, e il supporto multi-piattaforma di sviluppo con FreePascal/Lazzaro.

Un plus di DBISAM la ricerca full-text è che è strettamente integrata con l'SQL.Che è, si può eseguire una singola istruzione SELECT che direttamente combina ordinaria i criteri su alcuni campi con i criteri di ricerca fulltext su altri.A seconda delle tue esigenze, questa è una bella caratteristica che lo rende davvero semplice e veloce da fare alcune cose che vorresti fare più lavoro con un diverso fulltext soluzione.Penso che la maggior parte soluzioni add-on, come Lucene e altri che potrebbero essere utilizzati con Firebird, non si integrano strettamente con SQL regolari e si limitano a recuperare un set di record con fulltext criteri solo.Qualcosa di simile Textolution di proprietà di add-on per Firebird (http://www.textolution.com/ftsib_example.asp) sembra che potrebbe ospitare la costruzione unico complesso (nested query che si applica sia regolare e fulltext criteri, ma DBISAM fa più elegante.E l'aggiunta di un proprietario di add-on di un open source db tipo di sconfitte lo scopo di andare open source, comunque.

Un difetto di DBISAM/ElevateDB la ricerca full-text, credo, è che supporta solo l'utilizzo di 'E' e 'O' condizioni, non ha alcuna ricerca di prossimità.

Ho notato che c'è un fulltext soluzione per SQLite, http://www.sqlite.org/cvstrac/wiki?p=FullTextIndex.Non ho mai usato SQLite, ma conosco un sacco di gente lo ama.Un'area in cui sono abbastanza sicuro di DBISAM/Elevatesoft ha il grande vantaggio è in applicazioni multi-utente dove robusta chiusura funzionalità è necessaria, anche se non necessariamente portare qualsiasi peso per singolo utente desktop app.

Vorrei andare con Sqlite utilizzando Aducom componenti SQLite, sono facili da lavorare con SQLite di DiSQLite, gratis e il lavoro come componenti TDataset, voterei per sqlite perché:

  1. E 'molto veloce e il database compatto.
  2. Molto piccolo ingombro, proprio dietro 200kb Dll.
  3. Si può essere collegata statica quando viene utilizzato con i componenti Aducom, quindi non necessità di distribuire il dll.
  4. E 'un supporto incorporato per ricerca a testo integrale.
  5. E 'selvaggiamente utilizzato e usato in molte applicazioni gratuite e commerciali come storage esterno.
  6. Ha la maggior parte di SQL standard, quindi la maggior parte delle vostre conoscenze in SQL verranno utilizzati.

SQLite è solo praticamente singolo utente / singola connessione. Facendo un aggiornamento blocca l'intero database. Avete a che fare con questo impostando un valore di timeout per altre connessioni di attesa (l'impostazione predefinita è nessun timeout). Accesso multi-utente può diventare molto lento e / o dare timeout frequenti a seconda di quale valore si utilizza.

Ho usato i componenti Asqlite da http://www.aducom.com/ . libero e open source. attualmente non supporta D2009 tramite gli sguardi, ma è in fase di sviluppo. Ci sono una serie di altri insiemi di componenti come pure, ma non ho usato alcun altro.

È possibile aggiungere testo completo la ricerca a qualsiasi applicazione Delphi usando Rubicon (ora sotto nuova gestione a http: // www .href.com / rubicon ). Tuttavia questo non è libero: (

Perché si bisogno di una ricerca a testo integrale per questo? Io non uso Twitter, bu credo messaggi Twitter sono 140 caratteri max? Questi si adatterebbe in un campo varchar. Non hai bisogno di ricerca full-text di trovare qualcosa in tale campo.

C'è anche DotLucene, che non necessita di .NET framework per essere installato, ma possono essere caricate facilmente tramite le API COM di .NET. E 'ideale per la ricerca e ha un formato di query che è comune alla maggior parte dei motori di ricerca.

Ho una soluzione semi-lavoro Delphi qui: http://sourceforge.net/projects/mutis/ , una porta da Delphi di Lucene.

Il mayority di farlo funzionare bene, ma Unfortunally si è basata nella realizzazione morte Delphi.NET lavoro in modo requiere di aggiornare ad un nativo (sì, è stato un grosso errore prendere la strada .NET :()

DBISAM tutta la strada. Opere, molto solido, embedded, l'indicizzazione full text grandi opere (una vasta esperienza personale!)

ElevateDB è prob anche grande, ma non ho esperienza diretta con esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top