Dopo una domanda postata su come aumentare la velocità su uno dei miei metodi di ricerca SQL, mi è stato consigliato di aggiornare la mia tabella per utilizzare la ricerca di testo completo. Questo è quello che ho fatto ora, usando gli indici Gist per rendere la ricerca più veloce. In alcune delle "semplici" domande ho notato un notevole aumento di cui sono molto felice.PostgreSQL: ricerca testo completo - Come cercare parole parziali?
Tuttavia, sto riscontrando difficoltà nella ricerca di parole parziali. Ad esempio, ho diversi record che contengono la parola Squire (454) e ho diversi record che contengono Squirrel (173). Ora, se cerco Squire, restituisce solo i 454 record, ma voglio anche che restituisca anche i record di scoiattolo.
La mia domanda si presenta così
SELECT title
FROM movies
WHERE vectors @@ to_tsoquery('squire');
ho pensato che avrei potuto fare to_tsquery('squire%')
ma che non funziona.
Come ottengo la ricerca di corrispondenze parziali?
Inoltre, nel mio database ho registrazioni che sono film e altre che sono solo programmi TV. Questi sono differenziati dal "" sopra il nome, quindi "Munsters" è uno show televisivo, mentre The Munsters è il film dello spettacolo. Quello che voglio essere in grado di fare è cercare solo la serie TV E solo i film. Qualche idea su come posso ottenere questo?
saluti Anthoni
Se si ha la chiave di ricerca 'scudietta 'ma si desidera ottenere il risultato' scoiattolo', potrebbe essere necessario specificare ulteriori vincoli. Perché altrimenti si potrebbe obiettare che avevano la chiave di ricerca "mamma" ma volevano il risultato "coniglio". Quindi forse potresti voler dividere la tua chiave di ricerca e trasformare 'scudiero 'in' s | sq | squ | squi | squir | scudiero ... Questo algoritmo più elaborato ti procurerebbe lo "scoiattolo".Penso che la risposta di @Joshua Burns contenga una soluzione più generica della mia, se vuoi essere generico. –