Jump to content

Extension:CirrusSearch

From mediawiki.org
This page is a translated version of the page Extension:CirrusSearch and the translation is 98% complete.
Příručka k rozšířením MediaWiki
CirrusSearch
Stav rozšíření: stabilní
Implementace Hledání, API , Háček
Popis Implementuje vyhledávání MediaWiki pomocí Elasticsearch
Autoři Nik Everett, Chad Horohoe, Erik Bernhardson
Nejnovější verze průběžné aktualizace
Zásady kompatibility Vydání snímků současně s MediaWiki. Hlavní vývojová větev není zpětně kompatibilní.
Composer mediawiki/cirrussearch
Licence GNU General Public License 2.0 nebo novější
Stáhnout
README
  • $wgCirrusSearchDeduplicateInQuery
  • $wgCirrusSearchLanguageWeight
  • $wgCirrusSearchAutomationCIDRs
  • $wgCirrusSearchUseIcuFolding
  • $wgCirrusSearchStemmedWeight
  • $wgCirrusSearchQueryStringMaxDeterminizedStates
  • $wgCirrusSearchCrossClusterSearch
  • $wgCirrusSearchExtraIndexSettings
  • $wgCirrusSearchAutomationUserAgentRegex
  • $wgCirrusSearchTalkNamespaceWeight
  • $wgCirrusSearchPrefixWeights
  • $wgCirrusSearchMustTrackTotalHits
  • $wgCirrusSearchPrefixSearchRescoreProfile
  • $wgCirrusSearchLanguageToWikiMap
  • $wgCirrusSearchCompletionSuggesterUseDefaultSort
  • $wgCirrusSearchExtraFieldsInSearchResults
  • $wgCirrusSearchMoreLikeThisMaxQueryTermsLimit
  • $wgCirrusSearchUseIcuTokenizer
  • $wgCirrusSearchCompletionBannedPageIds
  • $wgCirrusSearchOptimizeIndexForExperimentalHighlighter
  • $wgCirrusSearchRescoreProfiles
  • $wgCirrusSearchPhraseRescoreBoost
  • $wgCirrusSearchInterwikiProv
  • $wgCirrusSearchMoreLikeThisAllowedFields
  • $wgCirrusSearchQueryStringMaxWildcards
  • $wgCirrusSearchElasticQuirks
  • $wgCirrusSearchMaxFileTextLength
  • $wgCirrusSearchFallbackProfiles
  • $wgCirrusSearchMoreLikeThisTTL
  • $wgCirrusSearchAllowLeadingWildcard
  • $wgCirrusSearchInterwikiPrefixOverrides
  • $wgCirrusSearchMaintenanceTimeout
  • $wgCirrusSearchReplicas
  • $wgCirrusSearchPhraseSlop
  • $wgCirrusSearchBoostOpening
  • $wgCirrusSearchWriteBackoffExponent
  • $wgCirrusSearchUserTesting
  • $wgCirrusSearchDefaultNamespaceWeight
  • $wgCirrusSearchUseCompletionSuggester
  • $wgCirrusSearchPhraseSuggestReverseField
  • $wgCirrusSearchFallbackProfile
  • $wgCirrusSearchFragmentSize
  • $wgCirrusSearchUnlinkedArticlesToUpdate
  • $wgCirrusSearchCustomPageFields
  • $wgCirrusSearchClientSideUpdateTimeout
  • $wgCirrusSearchIgnoreOnWikiBoostTemplates
  • $wgCirrusSearchRegexMaxDeterminizedStates
  • $wgCirrusSearchInterwikiHTTPConnectTimeout
  • $wgCirrusSearchExtraIndexes
  • $wgCirrusSearchCategoryDepth
  • $wgCirrusSearchMergeSettings
  • $wgCirrusSearchClusters
  • $wgCirrusSearchCrossProjectShowMultimedia
  • $wgCirrusSearchBannedPlugins
  • $wgCirrusSearchMoreLikeThisConfig
  • $wgCirrusSearchClusterOverrides
  • $wgCirrusSearchAlternateIndices
  • $wgCirrusSearchCrossProjectBlockScorerProfiles
  • $wgCirrusSearchEnableIncomingLinkCounting
  • $wgCirrusSearchNearMatchWeight
  • $wgCirrusSearchReplicaGroup
  • $wgCirrusSearchFeedbackLink
  • $wgCirrusSearchTextcatConfig
  • $wgCirrusSearchNumCrossProjectSearchResults
  • $wgCirrusSearchLanguageDetectors
  • $wgCirrusSearchUpdateShardTimeout
  • $wgCirrusSearchEnableCrossProjectSearch
  • $wgCirrusSearchFullTextQueryBuilderProfiles
  • $wgCirrusSearchCompletionDefaultScore
  • $wgCirrusSearchWriteClusters
  • $wgCirrusSearchCompletionSuggesterHardLimit
  • $wgCirrusSearchRecycleCompletionSuggesterIndex
  • $wgCirrusSearchStreamingUpdaterUsername
  • $wgCirrusSearchLogElasticRequests
  • $wgCirrusSearchConnectionAttempts
  • $wgCirrusSearchCompletionSuggesterUseAltIndexId
  • $wgCirrusSearchWikiToNameMap
  • $wgCirrusSearchMaxFullTextQueryLength
  • $wgCirrusSearchLogElasticRequestsSecret
  • $wgCirrusSearchManagedClusters
  • $wgCirrusLanguageLanguageKeywordExtraFields
  • $wgCirrusSearchCompletionSettings
  • $wgCirrusSearchNaturalTitleSort
  • $wgCirrusSearchDeduplicateInMemory
  • $wgCirrusSearchUseEventBusBridge
  • $wgCirrusSearchEnableRegex
  • $wgCirrusSearchClientSideSearchTimeout
  • $wgCirrusSearchIndexFieldsToCleanup
  • $wgCirrusSearchDeduplicateAnalysis
  • $wgCirrusSearchCategoryMax
  • $wgCirrusSearchExtraBackendLatency
  • $wgCirrusSearchNamespaceMappings
  • $wgCirrusSearchNamespaceResolutionMethod
  • $wgCirrusSearchPreferRecentUnspecifiedDecayPortion
  • $wgCirrusSearchIndexWeightedTagsPrefixMap
  • $wgCirrusSearchDocumentSizeLimiterProfiles
  • $wgCirrusSearchSearchShardTimeout
  • $wgCirrusSearchWeightedTags
  • $wgCirrusSearchRefreshInterval
  • $wgCirrusSearchSimilarityProfiles
  • $wgCirrusSearchCategoryEndpoint
  • $wgCirrusSearchMasterTimeout
  • $wgCirrusSearchPoolCounterKey
  • $wgCirrusSearchCompletionProfiles
  • $wgCirrusSearchMaxShardsPerNode
  • $wgCirrusSearchPrivateClusters
  • $wgCirrusSearchEnableArchive
  • $wgCirrusSearchUpdateDelay
  • $wgCirrusSearchInterwikiThreshold
  • $wgCirrusSearchIndexDeletes
  • $wgCirrusSearchDocumentSizeLimiterProfile
  • $wgCirrusSearchFiletypeAliases
  • $wgCirrusSearchDevelOptions
  • $wgCirrusSearchPrefixSearchStartsWithAnyWord
  • $wgCirrusSearchUpdateConflictRetryCount
  • $wgCirrusSearchInterwikiHTTPTimeout
  • $wgCirrusSearchFetchConfigFromApi
  • $wgCirrusSearchBoostTemplates
  • $wgCirrusSearchExtraIndexBoostTemplates
  • $wgCirrusSearchCompletionSuggesterSubphrases
  • $wgCirrusSearchPrefixIds
  • $wgCirrusSearchIndexedRedirects
  • $wgCirrusSearchMoreLikeThisFields
  • $wgCirrusSearchIndexAllocation
  • $wgCirrusSearchFullTextQueryBuilderProfile
  • $wgCirrusSearchSanityCheck
  • $wgCirrusSearchStripQuestionMarks
  • $wgCirrusSearchNamespaceWeights
  • $wgCirrusSearchCrossProjectOrder
  • $wgCirrusSearchPhraseSuggestBuildVariant
  • $wgCirrusSearchIndexBaseName
  • $wgCirrusSearchMoreAccurateScoringMode
  • $wgCirrusSearchMaxPhraseTokens
  • $wgCirrusSearchCrossProjectSearchBlockList
  • $wgCirrusSearchPhraseSuggestUseOpeningText
  • $wgCirrusSearchTextcatModel
  • $wgCirrusSearchMaxIncategoryOptions
  • $wgCirrusSearchEnableEventBusWeightedTags
  • $wgCirrusSearchWikimediaExtraPlugin
  • $wgCirrusSearchRescoreFunctionChains
  • $wgCirrusSearchLinkedArticlesToUpdate
  • $wgCirrusSearchRescoreProfile
  • $wgCirrusSearchPreferRecentDefaultHalfLife
  • $wgCirrusSearchDisableUpdate
  • $wgCirrusSearchFunctionRescoreWindowSize
  • $wgCirrusSearchActiveTest
  • $wgCirrusSearchPreferRecentDefaultDecayPortion
  • $wgCirrusSearchUseExperimentalHighlighter
  • $wgCirrusSearchCrossProjectProfiles
  • $wgCirrusSearchDefaultCluster
  • $wgCirrusSearchEnableAltLanguage
  • $wgCirrusSearchInterleaveConfig
  • $wgCirrusSearchPhraseRescoreWindowSize
  • $wgCirrusSearchSlowSearch
  • $wgCirrusSearchEnablePhraseSuggest
  • $wgCirrusSearchClientSideConnectTimeout
  • $wgCirrusSearchPhraseSuggestUseText
  • $wgCirrusSearchPhraseSuggestProfiles
  • $wgCirrusSearchSimilarityProfile
  • $wgCirrusSearchInterwikiSources
  • $wgCirrusSearchWeights
  • $wgCirrusSearchICUNormalizationUnicodeSetFilter
  • $wgCirrusSearchICUFoldingUnicodeSetFilter
  • $wgCirrusSearchShardCount
Přeložte rozšíření CirrusSearch, používá-li lokalizaci z translatewiki.net
Vagrant role cirrussearch
Problémy Otevřené úkoly · Nahlásit chybu

Rozšíření CirrusSearch implementuje vyhledávání na MediaWiki pomocí Elasticsearch.

Elasticsearch je samostatný software třetí strany, který je nutné nainstalovat jako požadavek pro toto rozšíření. Jedná se o databázový systém, který poskytuje funkce vyhledávání a indexování, kde se aktuální text vašich wiki stránek indexuje pro rychlejší a lepší výsledky vyhledávání. Komunikace mezi MediaWiki a Elasticsearch probíhá prostřednictvím webových služeb.

Viz také stránka s nápovědou k používání tohoto rozšíření.

Cíle

  • Žádné nativní závislosti, které by ztěžovaly instalaci. Jediné závislosti jsou čisté PHP, rozšíření MediaWiki a samotný Elasticsearch.
  • Poskytuje index vyhledávání wiki stránek téměř v reálném čase, který lze rozšířit o další rozšíření MediaWiki.
  • Uveďte všechny možnosti dotazů, které MWSearch uživatelům nabídl, a další.

Závislosti

PHP a cURL

Kromě standardních požadavků MediaWiki na PHP vyžaduje CirrusSearch, aby bylo PHP zkompilováno s podporou cURL.

Elasticsearch nebo Opensearch

Musíte použít instalaci Elasticsearch nebo Opensearch.

Každá verze Elasticsearchu mění fungování webových služeb a způsobuje problémy s kompatibilitou. Musíte nainstalovat verzi Elasticsearch kompatibilní s verzí MediaWiki, kterou aktuálně používáte:

MediaWiki 1.39+ vyžaduje Elasticsearch 7.10.2 (6.8.23+ je možné s použitím compatibility layer ). Informace o kompatibilitě se staršími verzemi MediaWiki naleznete v této revizi.

MediaWiki 1.44+ je kompatibilní s Opensearch 1.3.

Verze Elasticsearch před verzí 6.8 nejsou kompatibilní s PHP 8+.

Vezměte na vědomí, že je navíc potřeba instalace Javy, jako je OpenJDK. Nejlepší je použít oficiální obraz Dockeru od Elasticsearch nebo verzi hostovanou na vlastním serveru. Spravovaný produkt jako Amazon OpenSearch (dříve Amazon Elasticsearch) může fungovat, ale v závislosti na jeho specifikách může vyžadovat další konfiguraci. Například Amazon OpenSearch naslouchá pouze požadavkům Elasticsearch API přes HTTPS na portu 443 (tj. nezpřístupňuje výchozí port Elasticsearch 9200), takže proxy s povoleným TLS (např. Nginx) může CirrusSearch umožnit komunikaci s clusterem Amazon OpenSearch.

Elastica
  • Elastica je PHP knihovna, která umožňuje CirrusSearch komunikovat s Elasticasearch. Nainstalujte Elasticu podle pokynů níže.

Jiné
  • Vzhledem k tomu, že rozšíření CirrusSearch skutečně zpracovává úlohy, je vhodné nastavit úlohy v Redisu, aby se předešlo zprávám typu Notice: unserialize(): Error at offset 64870 of 65535 bytes in JobQueueDB.php a následným chybám typu Unsupported operand types. Podívejte se na stránku T157759.

Instalace

I když níže uvedené pokyny uvádějí, že při instalaci z Gitu máte spustit pouze Composer, může být nutné jej spustit i tak, aby se nainstalovaly všechny závislosti PHP.

  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného Elastica ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica
    
  • Při instalaci z Gitu spusťte Composer pro instalaci závislostí PHP zadáním composer install --no-dev v adresáři rozšíření. (Vyskytnou-li se nějaké komplikace, podívejte se na T173141.)
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'Elastica' );
    
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.

CirrusSearch

  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného CirrusSearch ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch
    
  • Při instalaci z Gitu spusťte Composer pro instalaci závislostí PHP zadáním composer install --no-dev v adresáři rozšíření. (Vyskytnou-li se nějaké komplikace, podívejte se na T173141.)
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'CirrusSearch' );
    
  • Nyní postupujte podle pokynů k instalaci v souboru CirrusSearch README dodaném s vaším rozšířením, tj. $IP/extensions/CirrusSearch/README. Upozorňujeme, že všechny informace v něm se nemusí vztahovat na vaši verzi rozšíření, zejména na verzi, kterou Elasticsearch podporuje.
  • Nakonfigurujte dle potřeby.
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.

Povolení regulárních výrazů

This is an optional step. You will need to install the search-extra plugin for this. Postupujte podle těchto kroků:

  1. Spusťte následující příkaz:
    /usr/share/elasticsearch/bin/elasticsearch-plugin/elasticsearch-plugin install org.wikimedia.search:extra:7.10.2-wmf12
    
  2. Přidejte do souboru LocalSettings.php následující řádek:
    $wgCirrusSearchWikimediaExtraPlugin[ 'regex' ] = [ 'build', 'use', 'max_inspect' => 10000 ];
    
  3. Restartujte Elasticsearch pomocí následujícího příkazu:
    systemctl restart elasticsearch
    
  4. Znovu vytvořte index vyhledávání spuštěním následujících příkazů:
    1. php path/to/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php --startOver
      
    2. php path/to/extensions/CirrusSearch/maintenance/ForceSearchIndex.php
      


Aktualizace

Postupujte prosím podle pokynů pro aktualizaci v souboru CirrusSearch UPGRADE.

Konfigurace

Konfigurační parametry CirrusSearch jsou popsány v souboru "settings.txt". Viz také dokumentaci k konfiguračním profilům CirrusSearch.

Elasticsearch se nepodaří indexovat pro CirrusSearch, pokud se použije název databáze pro MySQL obsahující velké písmeno, např. "MyWikiDatabaseName". Aby se tomu zabránilo, CirrusSearch poskytuje konfigurační parametr $wgCirrusSearchIndexBaseName, který je třeba nastavit, např. $wgCirrusSearchIndexBaseName = 'mywikidatabasename';.

Háčky

Rozšíření CirrusSearch definuje řadu háčků, které mohou jiná rozšíření využít k rozšíření základního schématu a úpravě dokumentů. K dispozici jsou následující háčky:

API

Funkce CirrusSearch lze použít v dotazech API. Vyhledávání probíhá prostřednictvím běžného vyhledávacího API, action=query&list=search; můžete použít specifické funkce CirrusSearch, jako je speciální prefix morelike:, k nalezení stránek souvisejících s Marie Curie a radiem:

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

Pro dotazování na konfigurační a ladicí informace CirrusSearch jsou k dispozici vlastní API a parametry:

Související odkazy

Obecné odkazy
Ladění

Místní rozvoj

Službu Elasticsearch lze spustit s rolí Vagrant (cirrussearch) a pomocí služby MediaWiki Vagrant.

Pro Docker můžete použít příkaz jako docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.2. Poté postupujte podle pokynů k instalaci a konfiguraci. Pokud se váš webhosting nachází v kontejneru, ujistěte se, že výše uvedený kontejner je ve stejné síti, a v souboru LocalSettings.php uveďte jako název hostitele elasticsearch. Toto nebude mít pluginy WMF, ale pro základní testování to může stačit.