Я использую экземпляр MediaWiki, который я только что обновил до последней версии на момент написания статьи 1.32.0. Этой вики уже почти 10 лет, и она прошла через ряд обновлений.
Это вики на французском языке, и кое-что раздражает для говорящих по-французски то, что встроенный поиск всегда считал акцентированные символы отличными от их не акцентированных аналогов , версия за версией.
Например, поиск Aromathérapie
возвращает количество результатов, а поиск Aromatherapie
возвращает 0 результатов.
Сначала я думал, что это проблема сопоставления базы данных, пока не заметил, что таблица searchindex
фактически заполнена ASCII-кодированными словами UTF-8. В приведенном выше примере aromathérapie
сохраняется как aromathu8c3a9rapie
, поэтому изменение параметров сортировки таблицы не помогает.
Копаясь в исходном коде, я нашел метод SearchMySQL :: normalizeText () , который отвечает за эту кодировку.
И, насколько я вижу, единственная нормализация, которую этот метод выполняет до кодирования, это нижний регистр:
MediaWikiServices::getInstance()->getContentLanguage()->lc( $out )
Похоже, что встроенный поиск не может игнорировать акценты.
Я довольно много гуглил по решениям и нашел в основном старые нерелевантные темы. Я очень удивлен, что не могу найти больше литературы по этому вопросу.
Как сделать поиск в MediaWiki нечувствительным к регистру и акценту?