Sono un po 'confuso con l'intero concetto di PostgreSQL, ricerca a testo integrale e Trigram. In tutta la mia query di ricerca di testo, sto usando tsvectors, in questo modo:PostgreSQL Ricerca di testo completo e confusione di Trigram
SELECT * FROM articles
WHERE search_vector @@ plainto_tsquery('english', 'cat, bat, rat');
Il problema è che questo metodo non tiene conto per errore di ortografia. Poi ho iniziato a leggere su Trigram and pg_trgm
:
Guardando attraverso altri esempi, sembra che venga utilizzato il trigramma o che vengano utilizzati i vettori, ma mai entrambi. Quindi le mie domande sono: sono mai stati usati insieme? Se é cosi, come? Il trigram sostituisce il testo completo? I trigram sono più precisi? E come sono i trigram sulle prestazioni?
ho aggiunto un paio di esempi per evidenziare le differenze tra '%' e ' @@ 'da ogni estensione. Se il tuo scopo è quello di trovare documenti che contengono inglese (o qualsiasi lingua conosciuta per la quale hai un dizionario), allora stai cercando testo completo. Se il tuo obiettivo è quello di abbinare un intero campo a una stringa dell'intero campo con un po 'di margine per gli errori di battitura, allora pg_trgm è quello che vuoi. –
Grazie per la spiegazione! Questo ha chiarito molto. Ok, quindi sembra che il problema possa essere risolto espandendo la mia conoscenza dei dizionari. –
+1 Risposta buona e chiara. –