Extension:CirrusSearch
CirrusSearch リリースの状態: 安定 |
|
---|---|
実装 | 検索, API , フック |
説明 | Elasticsearch を使った MediaWiki 検索の実装 |
作者 | Nik Everett, Chad Horohoe, Erik Bernhardson |
最新バージョン | 継続的な更新 |
互換性の方針 | MediaWiki とともにリリースされるスナップショット。 master には後方互換性がありません。 |
Composer | mediawiki/cirrussearch |
ライセンス | GNU 一般公衆利用許諾書 2.0 以降 |
ダウンロード | README |
|
|
|
|
|
|
四半期ごとのダウンロード数 | 265 (Ranked 18th) |
使用中の公開ウィキ | 1,226 (Ranked 212nd) |
translatewiki.net で翻訳を利用できる場合は、CirrusSearch 拡張機能の翻訳にご協力ください | |
Vagrant role | cirrussearch |
問題点 | 未解決のタスク · バグを報告 |
CirrusSearch 拡張機能はElasticsearchを使った MediaWiki 検索を実装します。
CirrusSearch will be migrated to use OpenSearch as its backend. Please see Wikimedia Search Platform/Decision Records/Search backend replacement technology for more information. |
Elasticsearch is a standalone third-party software you must install as a requirement for this extension. It is a database system that provides search and indexing functionality, where the current text of your wiki pages gets indexed for faster and improved search results. The communication between MediaWiki and ElasticSearch is done through web services.
この拡張機能の使用についてのヘルプページも参照してください。
目標
- ネイティブな依存関係がなくてもインストールが簡単にできること
** 唯一の依存関係は pure-PHP MediaWiki 拡張機能と Elasticsearch だけ
- 他の MediaWiki 拡張機能で拡張できるウィキページについて、ほぼリアルタイムに検索インデックスを返す
- MWSearch が利用者に開放したクエリオプションすべてと、その他を提供
依存関係
PHPとcURL
- CirrusSearchでは、MediaWikiの標準的なPHPの要件に加えて、cURLをサポートしてコンパイルされたPHPが必要です。
- Elasticsearch
- Elasticsearchをインストールする必要があります。
Every version of ElasticSearch changes how web services work and causes compatibility problems. You must install the version of Elastic Search compatible with the version of MediaWiki you are currently using:
Elasticsearch versions before 6.8 are incompatible with PHP 8+.
なお、OpenJDKなどのJavaのインストールが別途必要です。 Elasticsearchの公式Dockerイメージか、セルフホスティング版を使用するのがベストです。 Amazon OpenSearch(旧Amazon Elasticsearch)のようなマネージド製品でも動作しますが、その仕様によっては追加の設定が必要な場合があります。 例えば、Amazon OpenSearchは、ポート443上のHTTPSでElasticsearch APIリクエストをリッスンするだけなので(つまり、既定のElasticsearchポート9200を公開しない)、TLS対応プロキシ(例:Nginx)でCirrusSearchとAmazon OpenSearchクラスタの通信を可能にすることができます。
- ElasticaはElasticsearchと対話するためのPHPライブラリです。以下の説明に従ってElasticaをインストールしてください。
- その他
- Due to the actual handling of jobs by the CirrusSearch extension, it is advisable to set up jobs in Redis to prevent messages like Notice: unserialize(): Error at offset 64870 of 65535 bytes in JobQueueDB.php and subsequent errors like Unsupported operand types.
タスク T157759 を参照してください。
インストール
以下の説明では、gitからインストールする場合にのみComposerを実行するようになっていますが、PHPの依存コンポーネントをすべてインストールするためには、いずれにせよComposerを実行する必要があります。
- ダウンロードして、ファイルを
extensions/
フォルダー内のElastica
という名前のディレクトリ内に配置します。
開発者とコード寄稿者は、上記の代わりに以下を使用してGitからインストールします:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica - Gitでのインストールの場合のみ、PHPの依存関係をインストールするためComposerを実行します。 (合併症の可能性についてはタスク T173141を参照。)
- 以下のコードを LocalSettings.php ファイルの末尾に追加します:
wfLoadExtension( 'Elastica' );
- 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。
CirrusSearch
- ダウンロードして、ファイルを
extensions/
フォルダー内のCirrusSearch
という名前のディレクトリ内に配置します。
開発者とコード寄稿者は、上記の代わりに以下を使用してGitからインストールします:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch - Gitでのインストールの場合のみ、PHPの依存関係をインストールするためComposerを実行します。 (合併症の可能性についてはタスク T173141を参照。)
- 以下のコードを LocalSettings.php ファイルの末尾に追加します:
wfLoadExtension( 'CirrusSearch' );
- 拡張機能とともに配布されるCirrusSearch README、つまり
$IP/extensions/CirrusSearch/README
に記載されているセットアップ手順に従います。特に、サポートされているElasticsearchのバージョンについては、あなたの拡張機能のバージョンに当てはまらないかもしれないことに注意してください。 - 必要に応じて設定してください。
- 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。
Enable regex queries
This is an optional step. You will need to install the search-extra plugin for this. Do so by following these steps:
- execute the following command:
/usr/share/elasticsearch/bin/elasticsearch-plugin/elasticsearch-plugin install org.wikimedia.search:extra:7.10.2-wmf12
- add the following line to your
LocalSettings.php
file:$wgCirrusSearchWikimediaExtraPlugin[ 'regex' ] = [ 'build', 'use', 'max_inspect' => 10000 ];
- restart Elasticsearch with the following command:
systemctl restart elasticsearch
- recreate the search index by executing the following commands:
php path/to/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php --startOver
php path/to/extensions/CirrusSearch/maintenance/ForceSearchIndex.php
アップグレード
CirrusSearch UPGRADE ファイルに記載されているアップグレード方法に従ってください。
設定
CirrusSearchの設定パラメータは、"settings.txt"ファイルに記載されています。 See also documentation on CirrusSearch configuration profiles.
$wgCirrusSearchIndexBaseName
configuration parameter, which one needs to set, e.g., $wgCirrusSearchIndexBaseName = 'mywikidatabasename';
.
フック
CirrusSearch 拡張機能が規定するフックは他の拡張機能でも利用でき、それぞれのコアのスキーマ拡張と説明文書の変更に使えます。 使用できるフックは次の通りです。
- CirrusSearchAnalysisConfig - 解析のために設定にフックすることができます
- CirrusSearchMappingConfig - フィールドのマッピングを設定することができます。
- CirrusSearchBuildDocumentParse - ページから生成されたElasticSearchドキュメントを拡張機能で変更できるようになりました。
- CirrusSearchBuildDocumentLinks - 拡張機能でドキュメントの受信リンクと送信リンクを処理できるようにする
- CirrusSearchBuildDocumentFinishBatch - ページのバッチがインデックスされたときに呼び出されます。
- CirrusSearchAddQueryFeatures - クエリパーサの機能を追加する拡張機能
- CirrusSearchScoreBuilder - 拡張機能でリスコアビルダー関数を定義できます
- CirrusSearchProfileService - 拡張機能でさまざまな検索コンポーネントと構成を宣言できるようにする
API
CirrusSearch の機能は API クエリで使用可能です。
Searching happens via the normal search API, action=query&list=search
; you can use CirrusSearch-specific features, such as the morelike:
special prefix to find pages related to Marie Curie and radium:
api.php?action=query&list=search&srsearch=morelike:Marie_Curie%7Cradium&srlimit=10&srprop=size&formatversion=2
CirrusSearchの設定とデバッグ情報を照会するためのカスタムAPIとパラメータが提供されています。
action=cirrusdump
module: 2014?action=cirrusdump- 特別:検索または検索APIクエリへの
cirrusDumpQuery
パラメータ: https://en.wikipedia.org/wiki/Special:Search/cat%20dog%20chicken?cirrusDumpQuery - 特別:検索または検索APIクエリへの
cirrusDumpResult
パラメータ: https://en.wikipedia.org/wiki/Special:Search/cat%20dog%20chicken?cirrusDumpResult - An additional parameter,
cirrusExplain
, can be passed withcirrusDumpResult
to have the Lucene explanation of the score included with the result dump: https://en.wikipedia.org/wiki/Special:Search/cat%20dog%20chicken?cirrusDumpResult&cirrusExplain It can also be used to get the explanation in a human-readable format, by giving it one of the valuesverbose
,pretty
orhot
, such as: https://en.wikipedia.org/wiki/Special:Search/cat%20dog%20chicken?cirrusDumpResult&cirrusExplain=pretty - CirrusSearchのセットアップからダンプを取得するための
cirrus-config-dump
,cirrus-settings-dump
,cirrus-mapping-dump
,cirrus-profiles-dump
モジュールです。 api.php?action=cirrus-config-dump&formatversion=2
関連項目
- 一般的なリンク
- 使用方法に関するヘルプページ - CirrusSearch使用説明書(インストール後に必要)
- プロジェクトのページ
- ウィキメディアの Cirrus/Elastic 設定に関する情報
- 構成ヘルプページ - 索引作りにさまざまな影響を与える調整可能なパラメータのセット
- Extension:WikiSearch - provides faceted search API for Semantic MediaWiki using ElasticSearch.
- Extension:AdvancedSearch - Enhances Special:Search by providing advanced parameters
- デバッグ
ローカル開発
Elastic Searchサービスは、Vagrantのロール(cirrussearch
)とMediaWiki Vagrantで実行することができます。
Dockerの場合は、docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.2
のようなコマンドを使用することができます。
その後、インストールと設定の指示に従います。
ウェブホストがコンテナに入っている場合、上記のコンテナが同じネットワーク上にあることを確認し、LocalSettings.php
ファイルでホスト名としてelasticsearch
を参照するようにしたい。
WMFのプラグインはありませんが、基本的なテストには十分でしょう。
この拡張機能は 1 つ以上のウィキメディアのプロジェクトで使用されています。 これはおそらく、この拡張機能が安定していて高いトラフィックのウェブサイトでも十分に動作することを意味します。 この拡張機能がインストールされている場所を確認するには、ウィキメディアの設定ファイル CommonSettings.php および InitialiseSettings.php 内で、この拡張機能の名前を探してください。 特定のウィキにインストールされている拡張機能の完全な一覧は、そのウィキの Special:Version ページにあります。 |
この拡張機能は以下のウィキ ファーム/ウィキ ホスト/パッケージに含まれています: これは正式な一覧ではありません。 一部のウィキ ファーム/ウィキ ホスト/パッケージは、ここに記載されていなくてもこの拡張機能を含んでいる場合があります。 必ずご利用のウィキ ファーム、ウィキ ホスト、バンドルで確認してください。 |
- Stable extensions/ja
- Search extensions/ja
- API extensions/ja
- Hook extensions/ja
- Extensions supporting Composer/ja
- GPL licensed extensions/ja
- Extensions in Wikimedia version control/ja
- APIAfterExecute extensions/ja
- APIQuerySiteInfoGeneralInfo extensions/ja
- APIQuerySiteInfoStatisticsInfo extensions/ja
- ApiBeforeMain extensions/ja
- ArticleRevisionVisibilitySet extensions/ja
- BeforeInitialize extensions/ja
- CirrusSearchAddQueryFeatures extensions/ja
- CirrusSearchAnalysisConfig extensions/ja
- CirrusSearchSimilarityConfig extensions/ja
- GetPreferences extensions/ja
- LinksUpdateComplete extensions/ja
- PageDelete extensions/ja
- PageDeleteComplete extensions/ja
- PageMoveComplete extensions/ja
- PageUndeleteComplete extensions/ja
- PrefixSearchExtractNamespace extensions/ja
- ResourceLoaderGetConfigVars extensions/ja
- SearchGetNearMatch extensions/ja
- SearchIndexFields extensions/ja
- ShowSearchHitTitle extensions/ja
- SoftwareInfo extensions/ja
- SpecialSearchResults extensions/ja
- SpecialSearchResultsAppend extensions/ja
- SpecialStatsAddExtra extensions/ja
- TitleMove extensions/ja
- UploadComplete extensions/ja
- UserGetDefaultOptions extensions/ja
- All extensions/ja
- Extensions requiring Composer with git/ja
- Extensions used on Wikimedia/ja
- Extensions included in Canasta/ja
- Extensions included in Miraheze/ja
- Extensions included in MyWikis/ja
- Extensions included in semantic::core/ja
- Extensions included in wiki.gg/ja
- Extensions included in WikiForge/ja
- Discovery/ja
- Search/ja