gpt4 book ai didi

mediawiki - 如何让 MediaWiki 搜索忽略重音?

转载 作者:行者123 更新时间:2023-12-04 15:00:32 25 4
gpt4 key购买 nike

我正在运行一个 MediaWiki 实例,在撰写本文时我刚刚将其升级到最新版本 1.32.0。这个 wiki 已有近 10 年的历史,并且经历了多次升级。

这是一个法语维基,对于说法语的人来说,令人讨厌的是内置搜索始终考虑与非重音对应物不同的重音字符 ,一个版本一个版本。

例如,搜索 Aromathérapie返回多个结果,同时搜索 Aromatherapie返回 0 个结果。

起初我以为这是数据库整理问题,直到我注意到 searchindex表实际上填充了 ASCII 编码的 UTF-8 字。以上面的例子为例,aromathérapie存储为 aromathu8c3a9rapie ,因此更改表排序规则无济于事。

通过源代码挖掘,我找到了 SearchMySQL::normalizeText()负责此编码的方法。

据我所知,此方法在编码之前所做的唯一规范化是小写:

MediaWikiServices::getInstance()->getContentLanguage()->lc( $out )

因此,就目前而言,似乎无法使内置搜索忽略重音。

我在谷歌上搜索了很多解决方案,发现大多是旧的、不相关的线程。我真的很惊讶没有找到更多关于这个主题的文献。

如何使 MediaWiki 搜索不区分大小写和重音?

最佳答案

我并不为此感到自豪,但这是我解决它的方法,使用 MySQL 对排序规则的内置支持(它确实适用于全文索引 - 至少在 MySQL 的最新版本中 - 与代码所说的相反):

  • 已转换 searchindex表到utf8mb4 :ALTER TABLE searchindex CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 已申请 this patch到 SearchMySQL.php:
  • 没有小写,没有用十六进制编码的对应物替换 UTF-8 字符
  • unicode u标志在 preg_replace()
  • 重建searchindex table :php maintenance/rebuildtextindex.php

  • 每当更新 MediaWiki 安装时,都必须应用类似的程序,这会增加维护成本。程序很简单,这是我现在愿意接受的费用。

    最后要注意的是,这不会使自动完成不区分大小写,只有搜索结果。这对我来说已经足够了。

    关于mediawiki - 如何让 MediaWiki 搜索忽略重音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54172032/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com