Come forzare corrispondenze esatte nella ricerca?

Ho notato che per alcune ricerche non ottengo risultati:

Ma se restringo la ricerca, ad esempio a un argomento specifico, ottengo il risultato che sto cercando:

Inizialmente pensavo che potesse avere a che fare con il carattere accentato, ma ho effettuato diversi test e lo stesso problema si verifica anche con caratteri non accentati.

La mia seconda ipotesi era che potesse essere dovuto alle parole vuote (stop words), ma ho modificato app.yml per troncare il dizionario delle stop words spagnole:

ls -l /usr/share/postgresql/13/tsearch_data/spanish.stop
-rw-r--r-- 1 root root 0 May 12 06:37 /usr/share/postgresql/13/tsearch_data/spanish.stop
                       ☝️

Ci sono impostazioni che potrei modificare per assicurarmi che le corrispondenze esatte vengano sempre trovate?

Ciao @Nacho_Caballero,

puoi fornirmi un testo di esempio e un termine di ricerca che riproducano il problema? Nell’immagine riesco a vederlo, ma si vede solo l’estratto.

Grazie, Alan.

Ecco il contenuto di quel post specifico:

In effetti, non si usa dopo il “penso che” perché ciò che affermi di pensare è una realtà e non una possibilità.

D’altra parte, usiamo il congiuntivo quando utilizziamo la stessa struttura, ma in forma negativa: “Non penso che ci sia molta gente sul mercato oggi”.

Spero che questo risponda alla tua domanda, ma se hai bisogno di ulteriori dettagli, fammelo sapere e sarò felice di aiutarti.

Saluti! :smiley:

Tuttavia, per riprodurre questo comportamento qui, dovresti impostare la localizzazione in spagnolo e troncare il dizionario :sweat_smile:

L’ho testato su un sito Discourse di sviluppo che ho in esecuzione localmente e non sono riuscito a riprodurre il comportamento, ma credo che sia perché il sito è praticamente vuoto. Non credo che questo problema si verifichi finché non hai molti post (attualmente ne ho circa 68.000).

Potrei provare altre cose relative al dizionario di PostgreSQL, ma non sono sicuro di come accedere alla mia immagine Docker quando eseguo un’installazione di sviluppo. Esiste un equivalente di launcher enter app?

Idealmente, ci dovrebbe essere un modo per ignorare le parole di arresto. Ad esempio, per cercare questa frase nel tuo messaggio:

@Nacho_Caballero, Ciao, puoi dirmi quale algoritmo di ricerca sta attualmente utilizzando Discourse? Mi aiuterebbe a indagare sul problema.

Grazie, Yashi.

Immagino che Discourse utilizzi l’algoritmo di ricerca full-text predefinito di Postgres. Penso che l’unico modo per ottenere corrispondenze esatte quando si usano le virgolette (senza stemming e senza ignorare le parole di arresto) sia utilizzare il dizionario ‘simple’ :thinking:

Grazie, @Nacho_Caballero.

Esaminerò l’algoritmo di ricerca full text di Postgres.

È possibile cercare una corrispondenza esatta?

Esempio:

Al momento, la ricerca di “flow” restituisce purtroppo “fiore” come risultato con la rilevanza più alta..

Prova a cercare usando le virgolette, ad esempio cerca “flow” invece di flow.