Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie führt man eine Suche ohne Akzent und Groß-/Kleinschreibung in der MediaWiki-Datenbank durch?

Die MediaWiki TitleKey-Erweiterung ist grundsätzlich dafür ausgelegt, macht aber nur Case-Folding. Wenn es Ihnen jedoch nichts ausmacht, es ein wenig zu hacken, und Sie die PHP-Erweiterung iconv haben installiert haben, können Sie TitleKey_body.php und ersetzen Sie die Methode:

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

mit z.B.:

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

und rebuildTitleKeys.php (erneut) ausführen.

Die TitleKey-Erweiterung speichert ihre normalisierten Titel in einem separate Tabelle , überraschenderweise titlekey genannt . Es soll über die MediaWiki-Suchoberfläche aufgerufen werden, aber wenn Sie möchten, können Sie es natürlich auch direkt abfragen, z. so:

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