Mysql
 sql >> Database >  >> RDS >> Mysql

Come eseguire una ricerca senza distinzione tra accenti e maiuscole nel database MediaWiki?

L'estensione TitleKey di MediaWiki è fondamentalmente progettato per questo, ma esegue solo la piegatura del caso. Tuttavia, se non ti dispiace hackerarlo un po' e hai l'estensione PHP iconv installato, è possibile modificare TitleKey_body.php e sostituisci il metodo:

static function normalize( $text ) {
    global $wgContLang;
    return $wgContLang->caseFold( $text );
}

con es.:

static function normalize( $text ) {
    return strtoupper( iconv( 'UTF-8', 'US-ASCII//TRANSLIT', $text ) );
}

e (ri)eseguire ricostruzioneTitleKeys.php.

L'estensione TitleKey memorizza i suoi titoli normalizzati in un tabella separata , sorprendentemente chiamato titlekey . È destinato all'accesso tramite l'interfaccia di ricerca di MediaWiki, ma se lo desideri, puoi sicuramente interrogarlo anche direttamente, ad es. così:

SELECT page.* FROM page
  JOIN titlekey ON tk_page = page_id
WHERE tk_namespace = 0 AND tk_key = 'SOMETHING';