[genropy] Re: ricerca con caratteri "strani"

  • From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
  • To: genropy@xxxxxxxxxxxxx
  • Date: Tue, 6 Sep 2016 18:16:50 +0200


Il giorno 06 set 2016, alle ore 18:00, Alessandro Tufi 
<alessandro.tufi@xxxxxxxxx> ha scritto:

Il 03/08/16 18:35, Giovanni Porcari ha scritto:

Il giorno 03 ago 2016, alle ore 11:25, Alessandro Tufi 
<alessandro.tufi@xxxxxxxxx> ha scritto:

Un collega dall'altra parte del mondo ci ha inserito l'anagrafica "Đong Nai 
Plastic Company" (e l'indirizzo inizia con "Đường số ..", ma non è un 
problema :-)

Questi nomi non sono più "ricercabili": un utente non vietnamita cercherà 
sempre "Dong", ma non troverà niente.

Il problema è su tutti i caratteri "strani": la "o" tedesca doppiamente 
puntata, e anche sui caratteri accentati ("ì","à" etc). Ormai di questi 
casi ne abbiamo decine.

Voi come l'avete risolto?
Abbiamo messo un campo ragione_sociale_normalizzata che viene popolato con 
una versione senza punteggiatura e senza caratteri speciali e in fase di 
ricerca applichiamo lo stesso algoritmo. Ti faccio mandare domani da 
Francesco l'algoritmo.

Ciao

G

Soluzione: per eseguire la ricerca ignorando gli accenti si deve mettere nel 
model "unaccent=True" nei campi dove si vuole questo tipo di ricerca.

Abilitandola accade che il nome "SOCIETÀ" si possa ricercare con la frase 
"SOCIETA" (priva di accento).

Attenzione: nella fase di gnrdbsetup Postgresql chiede dei diritti superiori 
per l'utente corrente, servono per istallare una estensione


Il resto del mio problema (caratteri cirillici, cinesi e via) li ho risolti 
via trigger restringendo i caratteri ammessi.



In realtà la unaccent (nonostante il nome) copre ben di più che le singole 
lettere accentate.

Puoi vedere la documentazione di postgres : 
https://www.postgresql.org/docs/9.5/static/unaccent.html
In particolare lui ionstalla un dizionario di default qui :

"A more complete example, which is directly useful for most European languages, 
can be found in unaccent.rules, which is installed in $SHAREDIR/tsearch_data/ 
when the unaccent module is installed."

Ecco i caratteri che dovrebbe gestire. Se non bastano puoi personalizzarlo.

À       A
Á       A
       A
à      A
Ä       A
Å       A
Æ       A
à       a
á       a
â       a
ã       a
ä       a
å       a
æ       a
Ā       A
ā       a
Ă       A
ă       a
Ą       A
ą       a
Ç       C
ç       c
Ć       C
ć       c
Ĉ       C
ĉ       c
Ċ       C
ċ       c
Č       C
č       c
Ď       D
ď       d
Đ       D
đ       d
È       E
É       E
Ê       E
Ë       E
è       e
é       e
ê       e
ë       e
Ē       E
ē       e
Ĕ       E
ĕ       e
Ė       E
ė       e
Ę       E
ę       e
Ě       E
ě       e
Ĝ       G
ĝ       g
Ğ       G
ğ       g
Ġ       G
ġ       g
Ģ       G
ģ       g
Ĥ       H
ĥ       h
Ħ       H
ħ       h
Ĩ       I
Ì       I
Í       I
Π      I
Ï       I
ì       i
í       i
î       i
ï       i
ĩ       i
Ī       I
ī       i
Ĭ       I
ĭ       i
Į       I
į       i
İ       I
ı       i
IJ       I
ij       i
Ĵ       J
ĵ       j
Ķ       K
ķ       k
ĸ       k
Ĺ       L
ĺ       l
Ļ       L
ļ       l
Ľ       L
ľ       l
Ŀ       L
ŀ       l
Ł       L
ł       l
Ñ       N
ñ       n
Ń       N
ń       n
Ņ       N
ņ       n
Ň       N
ň       n
ʼn       n
Ŋ       N
ŋ       n
Ò       O
Ó       O
Ô       O
Õ       O
Ö       O
ò       o
ó       o
ô       o
õ       o
ö       o
Ō       O
ō       o
Ŏ       O
ŏ       o
Ő       O
ő       o
Œ       E
œ       e
Ø       O
ø       o
Ŕ       R
ŕ       r
Ŗ       R
ŗ       r
Ř       R
ř       r
ß       S
Ś       S
ś       s
Ŝ       S
ŝ       s
Ş       S
ş       s
Š       S
š       s
Ţ       T
ţ       t
Ť       T
ť       t
Ŧ       T
ŧ       t
Ù       U
Ú       U
Û       U
Ü       U
ù       u
ú       u
û       u
ü       u
Ũ       U
ũ       u
Ū       U
ū       u
Ŭ       U
ŭ       u
Ů       U
ů       u
Ű       U
ű       u
Ų       U
ų       u
Ŵ       W
ŵ       w
Ý       Y
ý       y
ÿ       y
Ŷ       Y
ŷ       y
Ÿ       Y
Ź       Z
ź       z
Ż       Z
ż       z
Ž       Z
ž       z
ё       е
Ё       Е



Ciao

G



Other related posts: