Jump to content

Extension:Cognate

本頁使用了標題或全文手工轉換
From mediawiki.org
This page is a translated version of the page Extension:Cognate and the translation is 100% complete.
MediaWiki扩展手册
Cognate
发行状态: 稳定版
实现 数据库
描述 Link different language versions of a page by using the page title.
作者 Gabriel Birke, Addshore
最新版本 Continuous updates
兼容性政策 快照跟随MediaWiki发布。 master分支不向后兼容。
MediaWiki 1.29+
数据库更改
虚拟域 virtual-cognate
  • $wgCognateNamespaces
  • $wgCognateReadOnly
许可证 GNU General Public License 2.0 or later
下載
前往translatewiki.net翻譯Cognate扩展
問題 开启的任务 · 报告错误

Cognate扩展创建一个中央存储库,用于存储一组网站的页面标题。 如果标题相同,它就可以在不同的维基计划之间生成跨维基链接。 它的开发是为了解决“集中管理维基词典的跨语言链接”这项任务。

Cognate(同源词)”是一个语言学概念,指不同语言中源自同一词源的词语。 这意味着这个扩展的名称不正确——因为这个扩展会将不同维基网站上标题相同的页面链接起来,所以一个更合适的名称应该是“homograph(同形異義詞)”。

假设和限制

  • 页面必须位于标准MediaWiki命名空间之一。
  • 页面标题在不同语言版本中保持一致(并进行了一些简单的标准化处理)。
  • 各站点应针对语言链接采用相同的跨语言结构。
  • 页面不应包含维基文本中的跨语言链接,因为这些链接会覆盖Cognate提供的链接。
  • 意外的哈希冲突不太可能发生,但并非不可能,一旦发生,会导致语言链接出现异常。

工作原理

标题规范化

该扩展内部会进行非常简单的标题规范化处理(转换为ASCII字符)。您可以在StringNormalizer类中查看相关代码。

最初的规范化程度非常低。可以提出申请以扩大标准化范围,我们将根据具体情况逐案进行审批。

字符串 规范化 備註
Hello… Hello... 原始字符串包含省略号字符。该字符会被规范化为三个点号。
lepelle’ lepelle' 标准化后的字符串包含一个标准化的撇号。

标题哈希

标题使用sha256进行哈希处理。这可以在StringHasher类中看到。

然后,哈希值的一部分被存储在数据库的BIG_INT字段中,以便进行高效查找。

大约有18,446,744,073,709,551,615种可能的取值。

字符串 哈希 整数
A 559AEAD08264D5795D3909718CDD05ABD49572E84FE55590EEF31A88A08FDFFD 6168500820899059065
Foo 1CBEC737F863E4922CEE63CC2EBBFAAFCD1CFF8B790D8CFD2E6A5D550B648AFA 2071311921841431698
1234567890 C775E7B757EDE630CD0AA1113BD102661AB38829CA52A6422AB782862F268646 -4074095513246505424

哈希值匹配

由于需要链接的标题在标准化后被认为是相同的,因此它们会生成相同的哈希值,从而在数据库中存储相同的整数值。

在enwiktionary上加载“Foo...”页面时,一些示例数据可能如下所示。

Wiki 标题 哈希整数 标准化哈希整数 注释
enwiktionary Foo... 395730596998145766 395730596998145766 匹配的行
frwiktionary Foo… -7435652355441782233 395730596998145766 匹配到了相应的行,尽管预处理后的标题包含省略号字符。
dewiktionary Foo... 395730596998145766 395730596998145766 匹配的行
arwiktionary Foo 2071311921841431698 2071311921841431698

覆盖

只需在页面中添加一个或多个跨语言链接,即可覆盖Cognate提供的自动链接。

这也意味着,为了使Cognate扩展在部署后正常工作,页面中的维基文本不应包含跨语言链接。

测试

该扩展可在维基词典测试版网站上进行测试:

这些网站使用Cognate扩展相互链接。

安裝

  • 下载文件,并解压Cognate文件夹到extensions/目录中。
    开发者和代码贡献人员应改从Git安装此扩展,输入:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Cognate
    
  • 請新增下列代码到您的LocalSettings.php 文件的底部:
    wfLoadExtension( 'Cognate' );
    # Settings used in WMF production
    # Use the external cluster 'extension1' and dbname 'cognate_wiktionary'
    $wgCognateDb = 'cognate_wiktionary';
    $wgCognateCluster = 'extension1';
    # Only work on the main namespace
    $wgCognateNamespaces = [ 0 ];
    
  • 請运行更新脚本,它将自动创建此扩展所必须的数据库表。
  • Yes 完成 – 請导航至您的wiki上的Special:Version,以验证此扩展已成功安装。
  • 运行维护脚本“populateCognateSites.php”来填充sites表。站点必须已存在于MediaWiki站点表中,并且分组正确。
php maintenance/run.php ./extensions/Cognate/maintenance/populateCognateSites.php --site-group=wiktionary
  • 运行维护脚本“populateCognatePages.php”来填充页面表和标题表。
php maintenance/run.php ./extensions/Cognate/maintenance/populateCognatePages.php