【发布时间】:2019-01-13 18:44:50
【问题描述】:
我正在运行一个 MediaWiki 实例,在撰写本文时我刚刚升级到最新版本 1.32.0。这个 wiki 已有近 10 年的历史,并且经历了多次升级。
这是一个法语 wiki,令说法语的人感到恼火的是,内置搜索总是会考虑一个又一个版本的重音字符与非重音字符。
例如,搜索Aromathérapie会返回多个结果,而搜索Aromatherapie会返回0个结果。
起初我以为这是一个数据库排序问题,直到我注意到searchindex 表实际上填充了 ASCII 编码的 UTF-8 单词。以上面的示例为例,aromathérapie 存储为aromathu8c3a9rapie,因此更改表排序规则没有帮助。
通过源代码挖掘,我找到了负责这种编码的SearchMySQL::normalizeText()方法。
据我所知,此方法在编码之前所做的唯一规范化是小写:
MediaWikiServices::getInstance()->getContentLanguage()->lc( $out )
就目前而言,似乎没有办法让内置搜索忽略重音符号。
我在谷歌上搜索了很多解决方案,发现大多是旧的、不相关的线程。我真的很惊讶没有找到更多关于这个主题的文献。
如何使 MediaWiki 搜索不区分大小写和重音?
【问题讨论】:
-
内置的MySQL搜索功能不是很强大;您可能想要安装搜索扩展程序,例如CirrusSearch.
-
我希望我可以利用 MySQL 对排序规则的出色支持(至少在最近的版本中),而不必安装 2 个 MediaWiki 扩展 + 1 个第三方软件。但恐怕你是对的:MediaWiki 方面似乎没有努力支持这一点,而且我不确定我是否想修改代码并经历未来升级的维护地狱。
-
@Benjamin My MediaWiki 1.31 安装默认工作。我有一篇文章叫
René,可以通过搜索Rene找到。您不能这样做的唯一原因是否可能是因为自创建您的文章的 MediaWiki 版本以来索引它们的方法发生了变化?您是否尝试过创建新文章并查看是否有问题? -
@Benjamin 我认为stackoverflow.com/questions/16014167/… 的所有内容都不适合您?
标签: mediawiki