Lascia che chiarisca questa affermazione. Per le corrispondenze esatte, non c’è bisogno di classificare i risultati poiché o c’è una corrispondenza o non c’è. Per le corrispondenze parziali, come decidiamo quali dovrebbero essere classificate più in alto?
- Questa è la mia parola chiave di ricerca
- La parola chiave di ricerca è interessante
- La parola chiave di ricerca è più interessante qui poiché il titolo è più lungo
Tutti i titoli sopra contengono la parola chiave di ricerca, quindi la domanda è: come classifichiamo i risultati? Attualmente ci affidiamo alla funzione di classificazione di Postgres per determinarlo per noi.
Le classifiche tentano di misurare quanto i documenti siano pertinenti a una specifica query, in modo che quando ci sono molte corrispondenze, quelle più rilevanti possano essere mostrate per prime. PostgreSQL fornisce due funzioni di classificazione predefinite, che tengono conto di informazioni lessicali, di prossimità e strutturali; cioè, considerano quanto spesso i termini della query appaiono nel documento, quanto sono vicini tra loro nel documento e quanto è importante la parte del documento in cui si verificano. Tuttavia, il concetto di rilevanza è vago e molto specifico dell’applicazione. Diverse applicazioni potrebbero richiedere informazioni aggiuntive per la classificazione, ad esempio la data di modifica del documento. Le funzioni di classificazione integrate sono solo esempi. Puoi scrivere le tue funzioni di classificazione e/o combinare i loro risultati con fattori aggiuntivi per adattarli alle tue esigenze specifiche.
Ci sono molti fattori che Postgres prende in considerazione, ma alla fine la classificazione rimane piuttosto vaga e dipende davvero da sito a sito, a seconda di come è strutturato il contenuto del forum. Il nostro obiettivo qui su Discourse è fornire un buon valore predefinato che funzioni per la maggior parte dei forum esistenti.