Quando provo a cercare in cinese nel mio forum, vedo che i risultati della ricerca restituiscono frasi spezzate, mancano i segni di punteggiatura e ci sono spazi bianchi inaspettati tra le parole, oltre ad alcune parole mancanti.
Ad esempio, ho cercato 管理员. La frase originale è:
管理人员可见的分类。只有管理员和版主才能阅览主题
Ma ciò che vedo nel risultato della ricerca assomiglia a questo:
Come puoi notare, 可见的 è mancante, manca anche il punto fermo 。, il che spezza la frase. Inoltre, 只有, 和 e 才能 sono assenti. Inoltre, ci sono spazi bianchi inaspettati tra le parole.
Qualcuno può aiutarmi a risolvere questo problema? Grazie
Sì, la ricerca funziona ancora, ma l’estratto visualizzato non è ottimale. Per la lingua cinese, la ricerca viene gestita in modo leggermente diverso. Invece di ignorare le parole vuote durante la query di ricerca stessa, le escludiamo completamente dai dati di ricerca.
Le stop word sono parole molto comuni che compromettono le prestazioni della ricerca
“E”, ad esempio, in inglese è una stop word
È possibile risolvere il problema; ci vorranno alcuni mesi per arrivare a una soluzione. Nel frattempo, se hai bisogno di una correzione rapida, consulta Marketplace
Le parole vuote sono determinate utilizzando GitHub - yanyiwu/cppjieba: "结巴"中文分词的C++版本 · GitHub. Con le recenti modifiche alla visualizzazione degli estratti di ricerca, dovremmo semplicemente rimuovere la riga seguente poiché interferisce con i dati di ricerca effettivi.
In ogni caso, il nostro supporto per la ricerca in cinese non è eccellente, ma esistono estensioni PG che potremmo prendere in considerazione per supportare correttamente le lingue che non hanno un supporto nativo. Forse https://pgroonga.github.io/?
PostgreSQL supporta la ricerca full-text solo per lingue che utilizzano esclusivamente lettere dell’alfabeto e cifre. Ciò significa che PostgreSQL non supporta la ricerca full-text per il giapponese, il cinese e così via. Puoi utilizzare la funzione di ricerca full-text ultra veloce per tutte le lingue installando PGroonga nel tuo PostgreSQL!
Scusa per non essere stato più specifico all’inizio. Se vogliamo davvero risolvere questo problema per ora, dobbiamo assicurarci di non rimuovere le parole vuote cinesi dai dati di ricerca, mantenendo però che le parole vuote vengano comunque rimosse quando vengono utilizzate come query di ricerca.
Ci sono due colonne che memorizziamo nella tabella PostSearchData: #search_data viene utilizzato durante le query sui termini di ricerca. #raw_data è ciò che usiamo quando mostriamo l’estratto di ricerca. La soluzione qui dovrebbe essere che le parole di arresto cinesi non vengano rimosse da #raw_data, pur continuando a essere rimosse da #search_data.