Extension:CirrusSearch/fr

This page is a translated version of the page Extension:CirrusSearch and the translation is 100% complete.
Manuel des extensions MediaWiki
CirrusSearch
État de la version : stable
Implémentation Rechercher, API , Accroche
Description Implémente la recherche dans MediaWiki en utilisant Elasticsearch
Auteur(s) Nik Everett, Chad Horohoe, Erik Bernhardson
Dernière version mises à jour continues
Politique de compatibilité Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière.
MediaWiki >= 1.42.0
Composer mediawiki/cirrussearch
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
README
  • $wgCirrusSearchDeduplicateInQuery
  • $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
  • $wgCirrusSearchCrossProjectShowMultimedia
  • $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
  • $wgCirrusSearchDeduplicateInMemory
  • $wgCirrusSearchUseEventBusBridge
  • $wgCirrusSearchDeduplicateAnalysis
  • $wgCirrusSearchExtraBackendLatency
  • $wgCirrusSearchNamespaceMappings
  • $wgCirrusSearchWMFExtraFeatures
  • $wgCirrusSearchPreferRecentUnspecifiedDecayPortion
  • $wgCirrusSearchNamespaceResolutionMethod
  • $wgCirrusSearchDocumentSizeLimiterProfiles
  • $wgCirrusSearchSearchShardTimeout
  • $wgCirrusSearchCategoryMax
  • $wgCirrusSearchPrivateClusters
  • $wgCirrusSearchSimilarityProfiles
  • $wgCirrusSearchCategoryEndpoint
  • $wgCirrusSearchRescoreFunctionChains
  • $wgCirrusSearchPoolCounterKey
  • $wgCirrusSearchCompletionProfiles
  • $wgCirrusSearchMaxShardsPerNode
  • $wgCirrusSearchWeights
  • $wgCirrusSearchEnableArchive
  • $wgCirrusSearchSimilarityProfile
  • $wgCirrusSearchInterwikiThreshold
  • $wgCirrusSearchIndexDeletes
  • $wgCirrusSearchDocumentSizeLimiterProfile
  • $wgCirrusSearchFiletypeAliases
  • $wgCirrusSearchDevelOptions
  • $wgCirrusSearchPrefixSearchStartsWithAnyWord
  • $wgCirrusSearchUpdateConflictRetryCount
  • $wgCirrusSearchInterwikiHTTPTimeout
  • $wgCirrusSearchFetchConfigFromApi
  • $wgCirrusSearchBoostTemplates
  • $wgCirrusSearchExtraIndexBoostTemplates
  • $wgCirrusSearchPrefixIds
  • $wgCirrusSearchFullTextQueryBuilderProfile
  • $wgCirrusSearchStripQuestionMarks
  • $wgCirrusSearchMoreLikeThisFields
  • $wgCirrusSearchIndexBaseName
  • $wgCirrusSearchMasterTimeout
  • $wgCirrusSearchSanityCheck
  • $wgCirrusSearchTextcatConfig
  • $wgCirrusSearchNamespaceWeights
  • $wgCirrusSearchCrossProjectOrder
  • $wgCirrusSearchTextcatModel
  • $wgCirrusSearchRescoreProfile
  • $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
Téléchargements trimestriels 338 (Ranked 16th)
Utilisé par les wikis publics 1,226 (Ranked 212nd)
Traduire l’extension CirrusSearch sur translatewiki.net si elle y est disponible
Rôle Vagrant cirrussearch
Problèmes Tâches ouvertes · Signaler un bogue

L'extension CirrusSearch implémente la recherche dans MediaWiki en utilisant Elasticsearch.

Elastic Search est un logiciel tiers indépendant qui doit être installé avant cette extension. C'est un système de base de données qui fournit des fonctionnalités de recherche et d'indexation, et qui indique où le texte actuel de chaque page de votre wiki sera indexé pour accélérer et améliorer le résultat des recherches. La communication entre MediaWiki et ElasticSearch se fait via les services web.

Voir aussi la page d'aide sur l'utilisation de cette extension.

Objectifs

  • Aucune dépendance native qui rendrait l'installation difficile
    • Les seules dépendances sont avec les extensions MediaWiki purement PHP et Elasticsearch lui-même
  • Fournir un index de recherche quasiment en temps réel pour les pages wiki extensibles par d'autres extensions MediaWiki
  • Fournir aux utilisateurs toutes les options de recherche dont MWSearch disposait, et davantage.

Dépendances

PHP et cURL
  • En plus des besoins standard de MediaWiki pour PHP, CirrusSearch nécessite que PHP soit compilé avec la prise en charge de cURL.
  • Notez que les versions de Elasticsearch antérieures à la 6.8 ne sont pas compatibles avec PHP 8.
Elasticsearch

Chaque version de ElasticSearch modifie la manière dont fonctionnent les services web et causent des problèmes de compatibilité. Vous devez installer la version de Elastic Search qui est compatible avec la version de MediaWiki que vous utilisez.

  • MediaWiki 1.29.x - 1.30.x nécessite Elasticsearch 5.3.x - 5.4.x
  • MediaWiki 1.31.x - 1.32.x nécessite Elasticsearch 5.5.x - 5.6.x
  • MediaWiki 1.33.x - 1.38.x nécessite Elasticsearch 6.5.x - 6.8.x (6.8.23+ recommandé)
  • MediaWiki 1.39+ nécessite Elasticsearch 7.10.2 (6.8.23+ est possible en utilisant un compatibility layer )

Notez bien qu'une installation supplémentaire de Java comme OpenJDK est nécessaire. Il vaut mieux utiliser l'image Docker officielle de Elasticsearch ou une version auto-hébergée. Un produit géré tel que Amazon OpenSearch (initialement Amazon Elasticsearch) peut fonctionner mais peut nécessiter une configuration supplémentaire en fonction de ses spécificités. Par exemple, Amazon OpenSearch n'écoute que les requêtes de l'API Elasticsearch sur HTTPS port 443 (c'est à dire qu'il n'expose pas le port par défaut Elasticsearch 9200), donc un proxy avec TLS (comme Nginx) peut activer CirrusSearch pour communiquer avec une grappe Amazon OpenSearch.

Elastica
  • Elastica est une bibliothèque PHP pour parler à Elasticsearch. Installez Elastica à l'aide des instructions ci-dessous.

Autres
  • A cause de la manière dont l'extension CirrusSearch gère actuellement les tâches, il est recommandé de fixer les tâches dans Redis afin d'empêcher les messages tels que Notice: unserialize(): Error at offset 64870 of 65535 bytes in JobQueueDB.php et les erreurs qui en découlent comme Unsupported operand types. Voir tâche T157759.

Installation

Elastica

Bien que les instructions ci-dessous vous indiquent de n'excuter Composer que lorsque vous faites une installation à partir de Git, il peut être nécessaire de le faire passer dans tous les cas afin d'installer toutes les dépendances PHP.

  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé Elastica dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica
  • Seulement lorsque vous installez à partir de Git, exécutez Composer pour installer les dépendances PHP, en entrant composer install --no-dev après vous être positionné dans le répertoire de l'extension. (Voir tâche T173141 pour des complications potentielles.)
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'Elastica' );
    
  •   Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

CirrusSearch

  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé CirrusSearch dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch
  • Seulement lorsque vous installez à partir de Git, exécutez Composer pour installer les dépendances PHP, en entrant composer install --no-dev après vous être positionné dans le répertoire de l'extension. (Voir tâche T173141 pour des complications potentielles.)
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'CirrusSearch' );
    
  • Maintenant suivez les instructions de configuration du fichier CirrusSearch README figurant avec votre extension par exemple $IP/extensions/CirrusSearch/README. Notez bien que toutes les informations qui y figurent ne s'appliquent pas forcément à la version de votre extension, particulièrement en ce qui concerne la version compatible de Elasticsearch.
  • Configurez comme cela est indiqué.
  •   Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Autoriser les requêtes avec des expressions régulières

This is an optional step. You will need to install the search-extra plugin for this. Do so by following these steps:

  1. execute the following command:
    /usr/share/elasticsearch/bin/elasticsearch-plugin/elasticsearch-plugin install org.wikimedia.search:extra:7.10.2-wmf12
    
  2. add the following line to you "LocalSettings.php" file:
    $wgCirrusSearchWikimediaExtraPlugin[ 'regex' ] = [ 'build', 'use', 'max_inspect' => 10000 ];
    
  3. restart Elasticsearch with the follwing command:
    systemctl restart elasticsearch
    
  4. recreate the search index by executing the following commands:
    1. php path/to/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php --startOver
      
    2. php path/to/extensions/CirrusSearch/maintenance/ForceSearchIndex.php
      


Mise à jour

Veuillez suivre les instructions de mise à jour conenues dans le fichier CirrusSearch UPGRADE .

Configuration

Les paramètres de configuration CirrusSearch sont documentés dans le fichiers "settings.txt". Voir aussi la documentation sur les profils de configuration CirrusSearch.

Elasticsearch échouera en indexant pour CirrusSearch si l'on utilise un nom de base de données pour MySQL qui contient un caractère majuscule, par exemple MyWikiDatabaseName. Pour atténuer ce problème, CirrusSearch fournit le paramètre de configuration $wgCirrusSearchIndexBaseName qui doit être initialisé, par exemple $wgCirrusSearchIndexBaseName = 'mywikidatabasename';.

Accroches

L'extension CirrusSearch définit un nombre d'accroches que les autres extensions peuvent réutiliser pour étendre le schéma du noyau et pour modifier les documents. Les accroches suivantes sont utilisables :

API

Les fonctionnalités de CirrusSearch peuvent être utilisées dans les requêtes d'API. La recherche se fait en utilisant l'API search, action=query&list=search ; vous pouvez utiliser les fonctionnalités spécifiques de CirrusSearch, telles que le préfixe spécial morelike: pour trouver les pages relatives à Marie Curie et au radium:

api.php?action=query&list=search&srsearch=morelike:Marie_Curie%7Cradium&srlimit=10&srprop=size&formatversion=2

Les APIs personnalisées et les paramètres sont fournis pour interroger la configuration CirrusSearch et les informations de débogage :

Voir aussi

Liens généraux
Débogage

Développement local

Le service Elastic Search peut être exécuté avec les rôles Vagrant (cirrussearch) et MediaWiki Vagrant.

Pour Docker, vous pouvez utiliser une commande telle que docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.2. Ensuite suivez les instructions pour l'installation et la configuration. Si l'hôte pour votre web se trouve dans un conteneur, assurez vous que le conteneur se trouve sur le même réseau, et dans LocalSettings.php référencez elasticsearch comme le nom de l'hôte. Ceci ne prendra pas en compte les plugins WMF mais peut être suffisant pour les tests de base.