在MediaWiki中,网站的所有页面都被分组到不同的命名空间中。默认情况下,搜索功能配置为仅在主(Main)命名空间——也就是包含文章的命名空间——中搜索。因此,如果用户搜索的术语或短语包含在属于其他命名空间的页面上(例如:讨论页面、用户页面等),则这些页面将不会在搜索结果中列出,除非用户通过高级搜索选项专门选择其他命名空间。
如果需要,可以启用其他命名空间的搜索功能。例如,你可能希望默认情况下也搜索与文章关联的讨论页面和个人用户页面。那么就可以在$wgNamespacesToBeSearchedDefault选项的帮助下进行此操作。
编辑LocalSettings.php并在文件末尾添加以下内容:
$wgNamespacesToBeSearchedDefault = array(
NS_MAIN => true,
NS_TALK => false,
NS_USER => false,
NS_USER_TALK => false,
NS_PROJECT => false,
NS_PROJECT_TALK => false,
NS_FILE => false,
NS_FILE_TALK => false,
NS_MEDIAWIKI => false,
NS_MEDIAWIKI_TALK => false,
NS_TEMPLATE => false,
NS_TEMPLATE_TALK => false,
NS_HELP => false,
NS_HELP_TALK => false,
NS_CATEGORY => false,
NS_CATEGORY_TALK => false
);
注意:网上有很多资料是使用[ ];
的形式来替代上述的array( );
,这两种方式在高版本中均可使用。
命名空间以其文本ID(也称为常量)列出。默认情况下,只有NS_MAIN设置为true,这意味着搜索功能仅适用于主(Main)命名空间。有关具有各自常量的命名空间的完整列表,以及使用每个命名空间的内容的完整列表,请查阅本站文章《MediaWiki的命名空间列表》。
要设置搜索功能以搜索命名空间的页面,只需将该命名空间的false更改为true即可。
例如,如果要搜索与文章关联的讨论页面,个人用户页面及其关联的讨论页面和类别页面,那么可以修改LocalSettings.php文件如下:
$wgNamespacesToBeSearchedDefault = array(
NS_MAIN => true,
NS_TALK => true,
NS_USER => true,
NS_USER_TALK => true,
NS_PROJECT => false,
NS_PROJECT_TALK => false,
NS_FILE => false,
NS_FILE_TALK => false,
NS_MEDIAWIKI => false,
NS_MEDIAWIKI_TALK => false,
NS_TEMPLATE => false,
NS_TEMPLATE_TALK => false,
NS_HELP => false,
NS_HELP_TALK => false,
NS_CATEGORY => true,
NS_CATEGORY_TALK => false
);
如果有你自己创建的命名空间,那么同样可以使用如上的方法,或者单独写一行代码:
$wgNamespacesToBeSearchedDefault[NS_TEST] = true;
请注意:以上更改设置了使用搜索功能时默认情况下应自动搜索哪些命名空间。在前端有搜索结果的页面上,可以单击“高级”按钮来查看高级选项。它显示命名空间列表,用户可以专门选择他们要搜索的命名空间。无论使用选项$wgNamespacesToBeSearchedDefault默认设置要搜索哪些命名空间,都可以执行此操作。