<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://qingliezhiquan.com/index.php?action=history&amp;feed=atom&amp;title=%E6%80%8E%E6%A0%B7%E4%B8%BA_MediaWiki_%E7%BD%91%E7%AB%99%E5%AE%89%E8%A3%85%E9%AB%98%E7%BA%A7%E6%90%9C%E7%B4%A2%E6%8B%93%E5%B1%95_CirrusSearch</id>
	<title>怎样为 MediaWiki 网站安装高级搜索拓展 CirrusSearch - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://qingliezhiquan.com/index.php?action=history&amp;feed=atom&amp;title=%E6%80%8E%E6%A0%B7%E4%B8%BA_MediaWiki_%E7%BD%91%E7%AB%99%E5%AE%89%E8%A3%85%E9%AB%98%E7%BA%A7%E6%90%9C%E7%B4%A2%E6%8B%93%E5%B1%95_CirrusSearch"/>
	<link rel="alternate" type="text/html" href="https://qingliezhiquan.com/index.php?title=%E6%80%8E%E6%A0%B7%E4%B8%BA_MediaWiki_%E7%BD%91%E7%AB%99%E5%AE%89%E8%A3%85%E9%AB%98%E7%BA%A7%E6%90%9C%E7%B4%A2%E6%8B%93%E5%B1%95_CirrusSearch&amp;action=history"/>
	<updated>2026-04-24T12:34:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://qingliezhiquan.com/index.php?title=%E6%80%8E%E6%A0%B7%E4%B8%BA_MediaWiki_%E7%BD%91%E7%AB%99%E5%AE%89%E8%A3%85%E9%AB%98%E7%BA%A7%E6%90%9C%E7%B4%A2%E6%8B%93%E5%B1%95_CirrusSearch&amp;diff=7911&amp;oldid=prev</id>
		<title>Mwroot: Created page with &quot;MediaWiki 原生的站内检索能力略有欠缺，但安装拓展 CirrusSearch 之后，站内检索能力则近乎完美。CirrusSearch 的检索能力主要来自 Elasticsearch 这款外部软件。据笔者实践，2G 小内存的机器就不要折腾了，运行几秒就耗干净内存了。但是对于内存稍强的机器，体验非常棒。据笔者多次实践，MediaWiki 安装 CirrusSearch 后，要正常运转，像本站这种小站，CirrusSearch 内存...&quot;</title>
		<link rel="alternate" type="text/html" href="https://qingliezhiquan.com/index.php?title=%E6%80%8E%E6%A0%B7%E4%B8%BA_MediaWiki_%E7%BD%91%E7%AB%99%E5%AE%89%E8%A3%85%E9%AB%98%E7%BA%A7%E6%90%9C%E7%B4%A2%E6%8B%93%E5%B1%95_CirrusSearch&amp;diff=7911&amp;oldid=prev"/>
		<updated>2025-09-29T02:11:58Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;MediaWiki 原生的站内检索能力略有欠缺，但安装拓展 CirrusSearch 之后，站内检索能力则近乎完美。CirrusSearch 的检索能力主要来自 Elasticsearch 这款外部软件。据笔者实践，2G 小内存的机器就不要折腾了，运行几秒就耗干净内存了。但是对于内存稍强的机器，体验非常棒。据笔者多次实践，MediaWiki 安装 CirrusSearch 后，要正常运转，像本站这种小站，CirrusSearch 内存...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;MediaWiki 原生的站内检索能力略有欠缺，但安装拓展 CirrusSearch 之后，站内检索能力则近乎完美。CirrusSearch 的检索能力主要来自 Elasticsearch 这款外部软件。据笔者实践，2G 小内存的机器就不要折腾了，运行几秒就耗干净内存了。但是对于内存稍强的机器，体验非常棒。据笔者多次实践，MediaWiki 安装 CirrusSearch 后，要正常运转，像本站这种小站，CirrusSearch 内存消耗稳定在 1.3G 左右，全站内存消耗稳定在 2.6G 左右。&lt;br /&gt;
&lt;br /&gt;
== 安装依赖 ==&lt;br /&gt;
以下软件要看准与 Mediawiki 版本兼容的相应版本。一般其实就是 Linux 发行版 stable 源中的相应版本。&lt;br /&gt;
# 外部安装并开启 [https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html elasticsearch] 的服务&lt;br /&gt;
# apt 安装 php&lt;br /&gt;
# apt 安装 curl&lt;br /&gt;
# apt 安装 openjdk&lt;br /&gt;
# apt 安装 composer&lt;br /&gt;
&lt;br /&gt;
详述一下 elasticsearch 的安装及运行：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb.sha512&lt;br /&gt;
shasum -a 512 -c elasticsearch-7.10.2-amd64.deb.sha512 &lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
sudo /bin/systemctl daemon-reload&lt;br /&gt;
sudo /bin/systemctl enable elasticsearch.service&lt;br /&gt;
&lt;br /&gt;
sudo systemctl start elasticsearch.service&lt;br /&gt;
&lt;br /&gt;
sudo systemctl status elasticsearch.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
检测 elasticsearch 是否成功开启：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
# 检测代码&lt;br /&gt;
curl -X GET &amp;quot;localhost:9200/?pretty&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 正常结果参考样子&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;name&amp;quot; : &amp;quot;Cp9sag6&amp;quot;,&lt;br /&gt;
  &amp;quot;cluster_name&amp;quot; : &amp;quot;elasticsearch&amp;quot;,&lt;br /&gt;
  &amp;quot;cluster_uuid&amp;quot; : &amp;quot;AT78_T_DTp-1qgIasfxtQqA&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot; : {&lt;br /&gt;
    &amp;quot;number&amp;quot; : &amp;quot;7.10.2&amp;quot;,&lt;br /&gt;
    &amp;quot;build_flavor&amp;quot; : &amp;quot;default&amp;quot;,&lt;br /&gt;
    &amp;quot;build_type&amp;quot; : &amp;quot;tar&amp;quot;,&lt;br /&gt;
    &amp;quot;build_hash&amp;quot; : &amp;quot;f2733455d&amp;quot;,&lt;br /&gt;
    &amp;quot;build_date&amp;quot; : &amp;quot;2016-03-30T09:51:41.449Z&amp;quot;,&lt;br /&gt;
    &amp;quot;build_snapshot&amp;quot; : false,&lt;br /&gt;
    &amp;quot;lucene_version&amp;quot; : &amp;quot;8.5.0&amp;quot;,&lt;br /&gt;
    &amp;quot;minimum_wire_compatibility_version&amp;quot; : &amp;quot;1.3.3&amp;quot;,&lt;br /&gt;
    &amp;quot;minimum_index_compatibility_version&amp;quot; : &amp;quot;1.3.3&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;tagline&amp;quot; : &amp;quot;You Know, for Search&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 安装拓展 ==&lt;br /&gt;
所谓拓展，即 Mediawiki 的 Extension，均在 [[mediawikiwiki:Extension:CirrusSearch|Mediawiki 官网]] 下载即可。&lt;br /&gt;
&lt;br /&gt;
此处拓展不建议使用 git 方式安装，因为 master 分支，与 mediawiki 稳定版分支，大概率不兼容。所以采用从拓展页直接下载 mediawiki 稳定版分支对应的拓展版本，很可能官方解决了兼容问题，就非常方便且不易出错。&lt;br /&gt;
&lt;br /&gt;
说人话就是，从网页端下载，再 tar 解压。通过这种方式安装对应兼容版本。&lt;br /&gt;
&lt;br /&gt;
[[File:选好版本，兼容无忧.png|1000px|这种拓展详情页面大家都很熟悉吧，选好版本，兼容无忧]]&lt;br /&gt;
&lt;br /&gt;
解压命令：&amp;lt;code&amp;gt;tar -xzf Elastica-REL1_42-78f2f84.tar.gz -C /var/www/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 安装 Elastica ===&lt;br /&gt;
# 下载 Elastica 拓展，并解压至 extensions/ 文件夹&lt;br /&gt;
# 可选，在 Elastica 文件夹内，执行 &amp;lt;code&amp;gt;sudo composer install --no-dev --no-plugins --no-scripts&amp;lt;/code&amp;gt;。用 sudo 不完美但目前我没找到更完美方法&lt;br /&gt;
# 在 LocalSettings.php 中添加 &amp;lt;code&amp;gt;wfLoadExtension( &amp;#039;Elastica&amp;#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果是通过网页端直接下载的插件，大概率不用 2 中的 composer 步骤，因为兼容问题官方 mediawiki 稳定版解决好了的。&lt;br /&gt;
&lt;br /&gt;
如果是通过 git 下载的插件，大概率要用 2 中的 composer 步骤，因为拓展版本、master 版本、mediawiki 稳定版三处很可能不兼容，会导致生成索引时找不到相关 api。&lt;br /&gt;
&lt;br /&gt;
=== 安装 CirrusSearch ===&lt;br /&gt;
# 下载 CirrusSearch 拓展，并解压至 extensions/ 文件夹&lt;br /&gt;
# 可选，在 CirrusSearch 文件夹内，执行 &amp;lt;code&amp;gt;sudo composer install --no-dev --no-plugins --no-scripts&amp;lt;/code&amp;gt;。用 sudo 不完美但目前我没找到更完美方法&lt;br /&gt;
# 在 LocalSettings.php 中添加 &amp;lt;code&amp;gt;wfLoadExtension( &amp;#039;CirrusSearch&amp;#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果是通过网页端直接下载的插件，大概率不用 2 中的 composer 步骤，因为兼容问题官方 mediawiki 稳定版解决好了的。&lt;br /&gt;
&lt;br /&gt;
如果是通过 git 下载的插件，大概率要用 2 中的 composer 步骤，因为拓展版本、master 版本、mediawiki 稳定版三处很可能不兼容，会导致生成索引时找不到相关 api。&lt;br /&gt;
&lt;br /&gt;
=== composer 样例 ===&lt;br /&gt;
composer 失败的最大原因，就是 Debian 源中的 composer 太旧了，必须直接[https://getcomposer.org/download/ 从 composer 官网下载最新版 composer]，那样几乎不会失败。当然，还有一个万年老问题是网络不通畅，请想办法自行解决。20250430 版本安装示例，可能会随时间改变：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
php -r &amp;quot;copy(&amp;#039;https://getcomposer.org/installer&amp;#039;, &amp;#039;composer-setup.php&amp;#039;);&amp;quot;&lt;br /&gt;
php -r &amp;quot;if (hash_file(&amp;#039;sha384&amp;#039;, &amp;#039;composer-setup.php&amp;#039;) === &amp;#039;dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6&amp;#039;) { echo &amp;#039;Installer verified&amp;#039;.PHP_EOL; } else { echo &amp;#039;Installer corrupt&amp;#039;.PHP_EOL; unlink(&amp;#039;composer-setup.php&amp;#039;); exit(1); }&amp;quot;&lt;br /&gt;
php composer-setup.php&lt;br /&gt;
php -r &amp;quot;unlink(&amp;#039;composer-setup.php&amp;#039;);&amp;quot;&lt;br /&gt;
sudo mv composer.phar /usr/local/bin/composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
composer 不用 sudo 的方法是，想用 composer 影响的文件夹的权属，与操作 composer 的用户，为同一个人。&lt;br /&gt;
&lt;br /&gt;
如果你还是非得用 git 方式安装以上两个拓展，那提供一个 composer 成功运行的两个样例。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
# 从 git 安装后 composer 的样例&lt;br /&gt;
Do not run Composer as root/super user! See https://getcomposer.org/root for details&lt;br /&gt;
Continue as root/super user [yes]? &lt;br /&gt;
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.&lt;br /&gt;
Loading composer repositories with package information&lt;br /&gt;
Updating dependencies&lt;br /&gt;
Lock file operations: 45 installs, 0 updates, 0 removals&lt;br /&gt;
  - Locking symfony/string (v7.2.0)&lt;br /&gt;
  - Locking tysonandre/var_representation_polyfill (0.1.3)&lt;br /&gt;
  - Locking webmozart/assert (1.11.0)&lt;br /&gt;
Writing lock file&lt;br /&gt;
Installing dependencies from lock file&lt;br /&gt;
Package operations: 9 installs, 0 updates, 0 removals&lt;br /&gt;
  - Downloading nyholm/dsn (2.0.1)&lt;br /&gt;
  - Downloading elasticsearch/elasticsearch (v7.17.1)&lt;br /&gt;
  - Downloading ruflin/elastica (7.3.1)&lt;br /&gt;
  - Installing react/promise (v3.2.0): Extracting archive&lt;br /&gt;
  - Installing ezimuel/guzzlestreams (3.1.0): Extracting archive&lt;br /&gt;
9 package suggestions were added by new dependencies, use `composer suggest` to see details.&lt;br /&gt;
Generating autoload files&lt;br /&gt;
4 packages you are using are looking for funding.&lt;br /&gt;
Use the `composer fund` command to find out more!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
# 从网页端安装后 composer 的样例&lt;br /&gt;
Do not run Composer as root/super user! See https://getcomposer.org/root for details&lt;br /&gt;
Continue as root/super user [yes]? &lt;br /&gt;
Installing dependencies from lock file&lt;br /&gt;
Verifying lock file contents can be installed on current platform.&lt;br /&gt;
Nothing to install, update or remove&lt;br /&gt;
Generating autoload files&lt;br /&gt;
4 packages you are using are looking for funding.&lt;br /&gt;
Use the `composer fund` command to find out more!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 容量比较 ===&lt;br /&gt;
本节无实际教程意义，仅做个比较。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 拓展不同安装方式占用容量比较&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |安装方式&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |状态&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |拓展名&lt;br /&gt;
|-&lt;br /&gt;
|Elastica&lt;br /&gt;
|CirrusSearch&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |网页方式安装&lt;br /&gt;
|解压前&lt;br /&gt;
|568KB&lt;br /&gt;
|13MB&lt;br /&gt;
|-&lt;br /&gt;
|解压后&lt;br /&gt;
|7.3MB&lt;br /&gt;
|92MB&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |git 方式安装&lt;br /&gt;
|composer 前&lt;br /&gt;
|1.6MB&lt;br /&gt;
|78MB&lt;br /&gt;
|-&lt;br /&gt;
|composer 后&lt;br /&gt;
|8.3MB&lt;br /&gt;
|118MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 生成索引 ==&lt;br /&gt;
这里其实就是配置 CirrusSearch。&lt;br /&gt;
&lt;br /&gt;
=== 改下配置 ===&lt;br /&gt;
首先，确保 Elasticsearch 按上文所说已安装并开启开机自动启用。确保你的 LocalSettings.php 里有这三行，其实就是加了第三行：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
wfLoadExtension( &amp;#039;Elastica&amp;#039; );&lt;br /&gt;
wfLoadExtension( &amp;#039;CirrusSearch&amp;#039; );&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 生成索引 ===&lt;br /&gt;
其次，生成 Elasticsearch 索引：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
sudo php $MW_INSTALL_PATH/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
# 成功状态如下&lt;br /&gt;
Updating cluster ...&lt;br /&gt;
indexing namespaces...&lt;br /&gt;
	Indexing namespaces...done&lt;br /&gt;
content index...&lt;br /&gt;
	Fetching Elasticsearch version...7.10.2...ok&lt;br /&gt;
	Scanning available plugins...none&lt;br /&gt;
	Validating mappings...&lt;br /&gt;
		Validating mapping...ok&lt;br /&gt;
	Validating aliases...&lt;br /&gt;
		Validating some_your-wiki_content alias...ok&lt;br /&gt;
		Validating some_your-wiki alias...ok&lt;br /&gt;
		Updating tracking indexes...done&lt;br /&gt;
general index...&lt;br /&gt;
	Fetching Elasticsearch version...7.10.2...ok&lt;br /&gt;
	Scanning available plugins...none&lt;br /&gt;
	Validating aliases...&lt;br /&gt;
		Validating some_your-wiki_general alias...ok&lt;br /&gt;
		Validating some_your-wiki alias...ok&lt;br /&gt;
		Updating tracking indexes...done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 再改配置 ===&lt;br /&gt;
其次，从 LocalSettings.php 移除刚才添加的这行：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$wgDisableSearchUpdate = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 调整索引 ===&lt;br /&gt;
再次，调整索引：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
sudo php $MW_INSTALL_PATH/extensions/CirrusSearch/maintenance/ForceSearchIndex.php --skipLinks --indexOnSkip&lt;br /&gt;
sudo php $MW_INSTALL_PATH/extensions/CirrusSearch/maintenance/ForceSearchIndex.php --skipParse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
# 第一条命令成功状态如下&lt;br /&gt;
[            some_your-wiki] Indexed 10 pages ending at 13 at 146/second&lt;br /&gt;
[            some_your-wiki] Indexed 10 pages ending at 25 at 235/second&lt;br /&gt;
[            some_your-wiki] Indexed 10 pages ending at 331 at 437/second&lt;br /&gt;
[            some_your-wiki] Indexed 10 pages ending at 341 at 440/second&lt;br /&gt;
[            some_your-wiki] Indexed 4 pages ending at 347 at 439/second&lt;br /&gt;
Indexed a total of 324 pages at 439/second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
# 第二条命令成功状态如下&lt;br /&gt;
[            some_your-wiki] Indexed 10 pages ending at 25 at 235/second&lt;br /&gt;
[            some_your-wiki] Indexed 10 pages ending at 39 at 284/second&lt;br /&gt;
[            some_your-wiki] Indexed 10 pages ending at 331 at 437/second&lt;br /&gt;
[            some_your-wiki] Indexed 10 pages ending at 341 at 440/second&lt;br /&gt;
[            some_your-wiki] Indexed 4 pages ending at 347 at 439/second&lt;br /&gt;
Indexed a total of 324 pages at 439/second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 再改配置 ===&lt;br /&gt;
最后，在 LocalSettings.php 中添加：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$wgSearchType = &amp;#039;CirrusSearch&amp;#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这样，你就成功实现了 Mediawiki 网站的站内搜索，例如搜索“清冽之泉”，则网站内所有包含“清冽之泉”四字的页面和标题，都会即刻出现。&lt;br /&gt;
&lt;br /&gt;
[[Category: MediaWiki]]&lt;/div&gt;</summary>
		<author><name>Mwroot</name></author>
	</entry>
</feed>