2009-08-10 18 views
7

SQLite3 sembra venire con tre diversi motori di ricerca full-text, chiamati FTS1, FTS2 e FTS3. La documentazione disponibile sul sito web indica che FTS1 è stabile, FTS2 è in fase di sviluppo e che è necessario utilizzare FTS2. Esempi che trovo online usano FTS3, che è in CVS, e non documentato rispetto a FTS2. Nessuno dei motori di ricerca full-text arriva con la fonte amalgamata, per quanto posso dire.Quale pacchetto di ricerca full-text dovrei usare per SQLite3?

Quindi, la mia domanda: quale di questi tre motori, se esiste, dovrei usare per l'indicizzazione full-text in SQLite? O dovrei semplicemente usare uno strumento di terze parti come Sphinx, o una soluzione personalizzata in Lucene, invece?

risposta

4

Ho esaminato recentemente anche le soluzioni full-text. Sembra che SQLite non abbia una scelta di fatto al momento. Indipendentemente da ciò che scegli, è inevitabile che tu debba riprogettarlo mentre le varie soluzioni FT2, FT3, ecc. Maturano. Quindi morde la pallottola e pensate che in futuro dovrete fare più sviluppo per stare al passo con la modifica della tecnologia full-text.

La ricerca della sfinge non ha ancora un supporto diretto per SQLite. Supporta solo MySQL e PostgreSQL in questo momento (circa agosto 2009). Quindi dovresti hackerare il tuo connettore SQLite o migrare i dati SQLite su MySQL o PostgreSQL e quindi indicizzare i dati con Sphinx Search. Penso che qualcuno stia lavorando su una patch Sphinx Search per supportare Firebird, quindi forse non è così difficile se sei disposto a rimboccarti le maniche.

Inoltre, tenere presente che la ricerca di Sfinge ha alcune limitazioni sull'aggiunta incrementale dei dati all'indice. Dovresti passare un'ora o più a leggere il documento prima di decidere di usarlo.

Non conosco alcun modo diretto per indicizzare i dati SQLite in Lucene. Probabilmente dovresti scrivere il tuo codice per elaborare batch di dati SQLite, aggiungendo righe all'indice di Lucene uno alla volta. Questo sembra essere l'uso di Lucene, non importa quale sia il database.


aggiornamento:Solr è una grande tecnologia compagno per Lucene. Solr fornisce a quel motore di ricerca molte funzionalità, tra cui la possibilità di caricare in blocco i dati dei risultati delle query da qualsiasi origine dati JDBC.

+1

Penso che sqlite3 fts3 sia preferibile a qualsiasi soluzione esterna. Meno parti mobili. Passare da fts2 a fts3 non può essere difficile come integrare Sphinx con i suoi limiti di aggiornamento o altre soluzioni esterne. –

+1

@Seun: Sono d'accordo - un po '. È vero che Sphinx Search richiedeva l'installazione di un altro software, mentre fts3 è incorporato in SQLite. Tuttavia, fts3 non è integrato nelle build predefinite, quindi è necessario ricompilare SQLite. E fts3 è un tipo * di tabella virtuale *, devi fare un po 'di copia manuale dei dati dalla tabella di origine alla tabella fts3 indipendentemente. Ha alcune parti mobili, non importa come lo fai. –

+0

FTS3 faceva parte della DLL ufficiale, così come lo è ora FTS4. –

6

A partire dal 3.6.21, FTS3 è ben documentato e ha ottenuto uno stato più ufficialmente visibile.

FTS3 fa parte della build sqlite DLL standard su Windows, non è sicuro della sorgente amalgamata.

Lo utilizziamo in produzione da circa un anno senza problemi particolari.