2009-08-30 5 views
6

La ricerca full text di MySql funziona in modo ragionevole con lingue non latine? (Ebraico, arabo, giapponese ...)La ricerca full text di MySql funziona in modo ragionevole con lingue non latine (ebraico, arabo, giapponese ...)

Aggiunta: alcuni test ... Ha alcuni problemi con l'ebraico. Esempio: Il nome מו ס ינזון è pronunciato lo stesso מו ש ינזון ma la ricerca non si troveranno l'altro, in quanto questo è un errore di ortografia comuni in ebraico, sembra dovrò fare alcune manipolazioni di dati per farlo funzionare perfettamente.

+0

Qual è la tua raccolta? – Eric

+0

utf8_unicode_ci –

+0

Sì, non prenderà la semantica ebraica. Se fosse impostato su una collazione ebraica, la mia ipotesi è che lo farebbe. – Eric

risposta

2

Fintanto che il tuo collation è impostato correttamente, funziona perfettamente.

Unicode funzionerà per la maggior parte di questo, ovviamente. Ma questo non traduce veramente molto bene i caratteri latini (ad esempio, in una fascicolazione olandese aa sarà riconosciuto come å).

1

Sì, tuttavia, controllare che cosa sono stopwords.

1

Japanese e Chinese utilizzano i propri simboli di spazi vuoti che MySQL non comprendono.

Assicurarsi che le parole nei testi che si sta indicando siano separate con i separatori ASCII (spazi, virgole, ecc.). Qualunque cosa al di fuori dell'intervallo ASCII probabilmente non funzionerà.

Inoltre, avrete probabilmente bisogno di fissare ft_min_word_len: per impostazione predefinita, non sarà MySQL parole indice più corte di 4 personaggi, e la maggior parte Japanese e Chinese parole.

In Cyrillic gli errori di transilterazione delle lingue sono abbastanza comuni.

Tutte le lettere da questa sequenza: АВЕКМНОРСТуХ/ABEKMHOPCTyX sono indistinguibili nella maggior parte dei tipi di carattere.

Il peggiore di questi è il cirillico С/Latino C: entrambi questi simboli si trovano su un unico tasto sulla tastiera e non si differenziano affatto nella maggior parte dei tipi di carattere, ma hanno codici diversi.

MySQL non lo catturerà neanche.

2

Anche se il supporto ebraico in MySQL è limitato, il problema è più un problema di persone che utilizzano l'ortografia errata, quindi una disfunzione del server MySQL in questa prospettiva. Quando scrivi una parola in Google, ti viene mostrato un suggerimento e puoi fare clic su tale suggerimento per cercare quel termine.

Forse potresti creare un programma con lo stesso comportamento, ad es. è possibile creare una tabella con 2 campi, uno contenente la parola comunemente errata e l'altro contenente l'ortografia corretta. È quindi possibile creare un programma che trova la parola errata e visualizza il suggerimento.

+0

Il modo usuale per implementare questo è l'uso di n-grammi – strum

0

La ricerca fulltext di MySQL funziona bene per arabo.Basta fare in modo di quanto segue, ove necessario:

  1. COLLATION = utf8_unicode_ci & CHARACTER SET = utf8. (Database, tabelle e colonne).
  2. Parole di indice di 3 lettere e altro. Questo è molto importante per l'arabo, ft_min_word_len = 3 (vedi show variables like "ft_%";)
  3. controllare la versione di MySQL (5.5 o 5.6) e del motore (InnoDB o MyISAM)