2009-06-04 9 views
7

Sto cercando di implementare la ricerca di testo completo sul nostro database Firebird. I nostri requisiti sono:Ricerca di testo completo con Firebird e Delphi

  1. Ogni campo in più tabelle deve essere indicizzato. Quando viene trovato un risultato dovremmo essere in grado di scoprire la tabella originaria.
  2. L'indice può essere memorizzato nel database o nel file system.
  3. I risultati della ricerca (chiavi primarie BigInt) devono essere utilizzati per unire i record originali nel database per visualizzare i record in una tabella.

Qualcuno può consigliare un modo decente per ottenere ciò di cui abbiamo bisogno? Ho cercato in qualche modo di integrare DotLucence in Delphi, ma non riesco a trovare davvero molte informazioni su come procedere.

risposta

12

qui ci sono poche risorse da prendere in considerazione:

  • Sphinx molto potente e popolare libero e open source motore di ricerca full-text.
  • Textolution Ricerca a testo completo per Interbase e Firebird.
  • IBObjects Modulo di ricerca testo completo ("Ricerca fuzzy"), un modulo completamente funzionante che può essere utilizzato per impostare gli indici di ricerca o come modello per la propria implementazione personalizzata.
  • Rubicon è un componente aggiuntivo Delphi che consente di inserire funzionalità di ricerca di testo completo nelle applicazioni.
  • Fulltext Search for Firebird SQL By Dan Letecky su CodeProject utilizzando il motore di ricerca full-text DotLucene.
  • Mutis è una porta Delphi del motore di ricerca Lucene. Fornisci un'API flessibile per le informazioni basate su testo di indice, catalogo e ricerca con prestazioni eccezionali. Ottimo per implementare motori di ricerca personalizzati, ricerca, recupero di testo, data mining e altro.

C'è un codice fork of Firebird creato da una società denominata Red Soft. È concesso in licenza con la stessa licenza di Firebird, quindi puoi dare un'occhiata alla loro versione che può supportare ricerche full-text utilizzando il motore Lucene tramite interfacce JavaVM.

È inoltre possibile leggere un documento intitolato "Full text search in Firebird without a full text search engine" di Bjoern Reimer e Dirk Baumeister, presentato alla quarta conferenza di Firebird.

+1

Ottima lista, Jim! – gabr

+0

Grazie Jim. Ne ho guardato la maggior parte, ma non ho mai trovato Mutis. Sto scaricando ora. A proposito, stai usando FTS nel tuo progetto Twitter? Se sì, quale hai scelto? – norgepaul

+0

Attualmente stiamo pianificando di utilizzare DISQLite3, ma il client è stato sospeso. Delphi Live! e poi la famiglia in città. Le cose si calmano e ora ho un momento di crisi al lavoro. –

-1

Penso che avremo un problema con il requisito 2: L'indice può essere memorizzato nel database o nel file system. La maggior parte dei servizi di indicizzazione crea il proprio file di indice che memorizza i dati in un modo altamente ottimizzato. Se lo vuoi davvero, forse è possibile caricare e salvare un indice in un singolo campo blob, ma non vedo davvero una ragione per questo.

+0

non vogliamo fare un 'dove campo come '% qualcosa%'' – jorgeu