Extension:CirrusSearch

From mediawiki.org
This page is a translated version of the page Extension:CirrusSearch and the translation is 88% complete.
MediaWiki 拡張機能マニュアル
OOjs UI icon advanced-invert.svg
CirrusSearch
リリースの状態: 安定
実装 検索, API , フック
説明 Elasticsearch を使った MediaWiki 検索の実装
作者 Nik Everett, Chad Horohoe, Erik Bernhardson
最新バージョン 継続的な更新
互換性の方針 MediaWikiとともにリリースされるスナップショット。 master には後方互換性がありません。
MediaWiki >= 1.37.0
Composer mediawiki/cirrussearch
ライセンス GNU 一般公衆利用許諾書 2.0 以降
ダウンロード
README
  • $wgCirrusSearchLanguageWeight
  • $wgCirrusSearchAutomationCIDRs
  • $wgCirrusSearchUseIcuFolding
  • $wgCirrusSearchStemmedWeight
  • $wgCirrusSearchQueryStringMaxDeterminizedStates
  • $wgCirrusSearchCrossClusterSearch
  • $wgCirrusSearchExtraIndexSettings
  • $wgCirrusSearchAutomationUserAgentRegex
  • $wgCirrusSearchTalkNamespaceWeight
  • $wgCirrusSearchPrefixWeights
  • $wgCirrusSearchPrefixSearchRescoreProfile
  • $wgCirrusSearchDisableUpdate
  • $wgCirrusSearchActiveTest
  • $wgCirrusSearchExtraFieldsInSearchResults
  • $wgCirrusSearchMoreLikeThisMaxQueryTermsLimit
  • $wgCirrusSearchUseIcuTokenizer
  • $wgCirrusSearchCompletionBannedPageIds
  • $wgCirrusSearchOptimizeIndexForExperimentalHighlighter
  • $wgCirrusSearchRescoreProfiles
  • $wgCirrusSearchPhraseRescoreBoost
  • $wgCirrusSearchInterwikiProv
  • $wgCirrusSearchDefaultCluster
  • $wgCirrusSearchQueryStringMaxWildcards
  • $wgCirrusSearchElasticQuirks
  • $wgCirrusSearchMaxFileTextLength
  • $wgCirrusSearchFallbackProfiles
  • $wgCirrusSearchMoreLikeThisTTL
  • $wgCirrusSearchAllowLeadingWildcard
  • $wgCirrusSearchInterwikiPrefixOverrides
  • $wgCirrusSearchMaintenanceTimeout
  • $wgCirrusSearchReplicas
  • $wgCirrusSearchPhraseSlop
  • $wgCirrusSearchBoostOpening
  • $wgCirrusSearchWriteBackoffExponent
  • $wgCirrusSearchUserTesting
  • $wgCirrusSearchShardCount
  • $wgCirrusSearchUseCompletionSuggester
  • $wgCirrusSearchPhraseSuggestReverseField
  • $wgCirrusSearchFallbackProfile
  • $wgCirrusSearchFragmentSize
  • $wgCirrusSearchUnlinkedArticlesToUpdate
  • $wgCirrusSearchCustomPageFields
  • $wgCirrusSearchClientSideUpdateTimeout
  • $wgCirrusSearchIgnoreOnWikiBoostTemplates
  • $wgCirrusSearchRegexMaxDeterminizedStates
  • $wgCirrusSearchInterwikiHTTPConnectTimeout
  • $wgCirrusSearchExtraIndexes
  • $wgCirrusSearchCategoryDepth
  • $wgCirrusSearchMergeSettings
  • $wgCirrusSearchClusters
  • $wgCirrusSearchAllFields
  • $wgCirrusSearchBannedPlugins
  • $wgCirrusSearchMoreLikeThisConfig
  • $wgCirrusSearchClusterOverrides
  • $wgCirrusSearchCrossProjectBlockScorerProfiles
  • $wgCirrusSearchEnableIncomingLinkCounting
  • $wgCirrusSearchNearMatchWeight
  • $wgCirrusSearchWriteIsolateClusters
  • $wgCirrusSearchIndexedRedirects
  • $wgCirrusSearchIndexAllocation
  • $wgCirrusSearchNumCrossProjectSearchResults
  • $wgCirrusSearchLanguageDetectors
  • $wgCirrusSearchUpdateShardTimeout
  • $wgCirrusSearchEnableCrossProjectSearch
  • $wgCirrusSearchFullTextQueryBuilderProfiles
  • $wgCirrusSearchCompletionDefaultScore
  • $wgCirrusSearchWriteClusters
  • $wgCirrusSearchCompletionSuggesterHardLimit
  • $wgCirrusSearchRecycleCompletionSuggesterIndex
  • $wgCirrusSearchLogElasticRequests
  • $wgCirrusSearchConnectionAttempts
  • $wgCirrusSearchElasticaWritePartitionCounts
  • $wgCirrusSearchWikiToNameMap
  • $wgCirrusSearchMaxFullTextQueryLength
  • $wgCirrusSearchLogElasticRequestsSecret
  • $wgCirrusSearchEnableRegex
  • $wgCirrusSearchClientSideSearchTimeout
  • $wgCirrusSearchWMFExtraFeatures
  • $wgCirrusSearchNamespaceResolutionMethod
  • $wgCirrusSearchExtraBackendLatency
  • $wgCirrusSearchNamespaceMappings
  • $wgCirrusSearchCategoryMax
  • $wgCirrusSearchPreferRecentUnspecifiedDecayPortion
  • $wgCirrusSearchCategoryEndpoint
  • $wgCirrusSearchDocumentSizeLimiterProfiles
  • $wgCirrusSearchSearchShardTimeout
  • $wgCirrusSearchCrossProjectShowMultimedia
  • $wgCirrusSearchPrivateClusters
  • $wgCirrusSearchSimilarityProfiles
  • $wgCirrusSearchWeights
  • $wgCirrusSearchEnableArchive
  • $wgCirrusSearchPoolCounterKey
  • $wgCirrusSearchCompletionProfiles
  • $wgCirrusSearchMaxShardsPerNode
  • $wgCirrusSearchIndexDeletes
  • $wgCirrusSearchDocumentSizeLimiterProfile
  • $wgCirrusSearchSimilarityProfile
  • $wgCirrusExploreSimilarResults
  • $wgCirrusSearchFiletypeAliases
  • $wgCirrusSearchDevelOptions
  • $wgCirrusSearchBoostTemplates
  • $wgCirrusSearchPrefixIds
  • $wgCirrusSearchPrefixSearchStartsWithAnyWord
  • $wgCirrusSearchUpdateConflictRetryCount
  • $wgCirrusSearchInterwikiHTTPTimeout
  • $wgCirrusSearchFetchConfigFromApi
  • $wgCirrusSearchFullTextQueryBuilderProfile
  • $wgCirrusSearchExtraIndexBoostTemplates
  • $wgCirrusSearchStripQuestionMarks
  • $wgCirrusSearchIndexBaseName
  • $wgCirrusSearchTextcatModel
  • $wgCirrusSearchMoreLikeThisFields
  • $wgCirrusSearchMasterTimeout
  • $wgCirrusSearchTextcatConfig
  • $wgCirrusSearchSanityCheck
  • $wgCirrusSearchInterwikiThreshold
  • $wgCirrusSearchNamespaceWeights
  • $wgCirrusSearchCrossProjectOrder
  • $wgCirrusSearchRescoreProfile
  • $wgCirrusSearchRescoreFunctionChains
  • $wgCirrusSearchMoreAccurateScoringMode
  • $wgCirrusSearchMaxPhraseTokens
  • $wgCirrusSearchCrossProjectSearchBlockList
  • $wgCirrusSearchCrossProjectProfiles
  • $wgCirrusSearchLanguageToWikiMap
  • $wgCirrusSearchMaxIncategoryOptions
  • $wgCirrusSearchEnableAltLanguage
  • $wgCirrusSearchWikimediaExtraPlugin
  • $wgCirrusSearchCompletionSuggesterUseDefaultSort
  • $wgCirrusSearchLinkedArticlesToUpdate
  • $wgCirrusSearchCompletionSuggesterSubphrases
  • $wgCirrusSearchPreferRecentDefaultHalfLife
  • $wgCirrusSearchSlowSearch
  • $wgCirrusSearchFunctionRescoreWindowSize
  • $wgCirrusSearchEnablePhraseSuggest
  • $wgCirrusSearchCompletionSettings
  • $wgCirrusSearchUseExperimentalHighlighter
  • $wgCirrusSearchFeedbackLink
  • $wgCirrusSearchUpdateDelay
  • $wgCirrusSearchRefreshInterval
  • $wgCirrusSearchInterleaveConfig
  • $wgCirrusSearchPhraseRescoreWindowSize
  • $wgCirrusSearchMoreLikeThisAllowedFields
  • $wgCirrusSearchPreferRecentDefaultDecayPortion
  • $wgCirrusSearchClientSideConnectTimeout
  • $wgCirrusSearchPhraseSuggestUseText
  • $wgCirrusSearchPhraseSuggestProfiles
  • $wgCirrusSearchDefaultNamespaceWeight
  • $wgCirrusSearchInterwikiSources
  • $wgCirrusSearchPhraseSuggestUseOpeningText
  • $wgCirrusSearchICUNormalizationUnicodeSetFilter
  • $wgCirrusSearchICUFoldingUnicodeSetFilter
  • $wgCirrusSearchReplicaGroup
translatewiki.net で翻訳を利用できる場合は、CirrusSearch 拡張機能の翻訳にご協力ください
Vagrant role cirrussearch
問題点 未解決のタスク · バグを報告

CirrusSearch 拡張機能はElasticsearchを使った MediaWiki 検索を実装します。

Elastic Search is a standalone third-party software that must be installed in advance. It's a database system that provides search and indexing functionality, and where the current text of all pages of your wiki will be indexed for faster search results. The communication between MediaWiki and ElasticSearch is done through web services.

このページはインストールに関するものです。 インストール後、使用法に関してはHelp:CirrusSearch を確認してください。

目標

  • ネイティブな依存関係がなくてもインストールが簡単にできること
    • 唯一の依存関係は pure-PHP MediaWiki 拡張機能と Elasticsearch だけ
  • 他の MediaWiki 拡張機能で拡張できるウィキページについて、ほぼリアルタイムに検索インデックスを返す
  • MWSearch が利用者に開放したクエリオプションすべてと、その他を提供

依存関係

PHPとcURL

  • Note that Elasticsearch versions prior to 6.8 are not compatible with PHP 8.
Elasticsearch

Every version of ElasticSearch change how web services work, and cause compatibility problems. You must install the version of Elastic Search compatible with the version of MediaWiki you are currently using:

  • MediaWiki 1.29.x - 1.30.x は Elasticsearch 5.3.x - 5.4.x を必要とします
  • MediaWiki 1.31.x - 1.32.x は Elasticsearch 5.5.x - 5.6.x を必要とします
  • MediaWiki 1.33.x - 1.38.x は Elasticsearch 6.5.x - 6.8.x を必要とします (6.8.23+ 推奨)
  • MediaWiki 1.39+ require Elasticsearch 7.10.2 (6.8.23+ is possible using a compatibility layer )

なお、OpenJDKなどのJavaのインストールが別途必要です。 Elasticsearchの公式Dockerイメージか、セルフホスティング版を使用するのがベストです。 Amazon OpenSearch(旧Amazon Elasticsearch)のようなマネージド製品でも動作しますが、その仕様によっては追加の設定が必要な場合があります。 例えば、Amazon OpenSearchは、ポート443上のHTTPSでElasticsearch APIリクエストをリッスンするだけなので(つまり、デフォルトのElasticsearchポート9200を公開しない)、TLS対応プロキシ(例:Nginx)でCirrusSearchとAmazon OpenSearchクラスタの通信を可能にすることができます。

Elastica
  • 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 を参照してください。


インストール

Elastica

以下の説明では、gitからインストールする場合にのみComposerを実行するようになっていますが、PHPの依存コンポーネントをすべてインストールするためには、いずれにせよComposerを実行する必要があります。

  • ダウンロードして、ファイルをextensions/フォルダー内のElasticaという名前のディレクトリ内に配置します。
  • Gitでのインストールの場合のみ、PHPの依存関係をインストールするためComposerを実行します。 (合併症の可能性についてはタスク T173141を参照。)
  • 以下のコードを LocalSettings.php の末尾に追加します:
    wfLoadExtension( 'Elastica' );
    
  • Yes 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。

CirrusSearch

  • ダウンロードして、ファイルをextensions/フォルダー内のCirrusSearchという名前のディレクトリ内に配置します。
  • Gitでのインストールの場合のみ、PHPの依存関係をインストールするためComposerを実行します。 (合併症の可能性についてはタスク T173141を参照。)
  • 以下のコードを LocalSettings.php の末尾に追加します:
    wfLoadExtension( 'CirrusSearch' );
    
  • 拡張機能とともに配布されるCirrusSearch README、つまり$IP/extensions/CirrusSearch/READMEに記載されているセットアップ手順に従います。特に、サポートされているElasticsearchのバージョンについては、あなたの拡張機能のバージョンに当てはまらないかもしれないことに注意してください。
  • 必要に応じて設定してください。
  • Yes 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。

アップグレード

CirrusSearch UPGRADE ファイルに記載されているアップグレード方法に従ってください。

設定

CirrusSearchの設定パラメータは、"settings.txt"ファイルに記載されています。 See also documentation on CirrusSearch configuration profiles.

Elasticsearch will fail to index for CirrusSearch if one is using a database name for MySQL which contains a capital character, e.g. "MyWikiDatabaseName". To mitigate this CirrusSearch provides the $wgCirrusSearchIndexBaseName configuration parameter which one needs to set, e.g. $wgCirrusSearchIndexBaseName = 'mywikidatabasename';.

フック

CirrusSearch 拡張機能が規定するフックは他の拡張機能でも利用でき、それぞれのコアのスキーマ拡張と説明文書の変更に使えます。 使用できるフックは次の通りです。

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とパラメータが提供されています。

関連項目

一般的なリンク
デバッグ

ローカル開発

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のプラグインはありませんが、基本的なテストには十分でしょう。