एक्सटेंशन:CirrusSearch

This page is a translated version of the page Extension:CirrusSearch and the translation is 80% complete.
Outdated translations are marked like this.
मीडियाविकि एक्सटेंशन मैन्युअल
CirrusSearch
प्रकाशन की स्थिति: स्थिर
कार्यान्वयन खोज, API , हुक
विवरण Elasticsearch की मदद से मीडियाविकि को खोजने देता है
लेखक Nik Everett, Chad Horohoe, Erik Bernhardson
नवीनतम संस्करण निरंतर अद्यतन
संगतता नीति मीडियाविकि के साथ प्रकाशित स्नैपशॉट्स। Master में पीछे की तरफ से संगतता नहीं है।
MediaWiki >= 1.42.0
Composer mediawiki/cirrussearch
लाइसेंस GNU साधारण सार्वजनिक लाइसेंस 2.0 या अधिक
डाउनलोड करें
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
  • $wgCirrusSearchDeduplicateInMemory
  • $wgCirrusSearchEnableRegex
  • $wgCirrusSearchClientSideSearchTimeout
  • $wgCirrusSearchIndexFieldsToCleanup
  • $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
Quarterly downloads 290 (Ranked 17th)
Public wikis using 1,226 (Ranked 212nd)
CirrusSearch एक्सटेंशन को अनुवादित करें अगर यह translatewiki.net पर उपलब्ध है
आवारा भूमिका cirrussearch
मुद्दे अधूरे कार्य · बग की रिपोर्ट करें

CirrusSearch एक्सटेंशन की मदद से आप मीडियाविकि पर Elasticsearch के ज़रिए खोज सकते हैं।

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.

See also the help page on using this extension.

लक्ष्य

  • कोई लोकल निर्भरता नहीं जो इसे स्थापित करना मुश्किल बना दे
    • मात्र निर्भरताएँ हैं पूर्ण-PHP मीडियाविकि एक्सटेंशन्स, और Elasticsearch
  • विकि पृष्ठों के लिए एक करीब-लाइव खोज इनडेक्स प्रदान करना जिसे दूसरे मीडियाविकि एक्सटेंशनों द्वारा बढ़ाया जा सके
  • MWSearch द्वारा सदस्यों को दिए गए क्वेरी के सभी विकल्प, और अधिक प्रदान करना

निर्भरताएँ

PHP और cURL
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:

मीडियाविकि 1.39+ पर Elasticsearch 7.10.2 की ज़रूरत होगी (compatibility layer की मदद से 6.8.23+ संभव). See this revision for compatibility information with earlier versions of MediaWiki.
* ध्यान रखें कि संस्करण 6.8 से पहले के Elasticsearch संस्करण PHP 8 से अनुकूल नहीं हैं।

ध्यान रखें कि इसके साथ OpenJDK जैसी एक जावा स्थापना की भी ज़रूरत होगी। सबसे अच्छा होगा कि आप आधिकारिक Elasticsearch Docker चित्र या फिर किसी स्वयं होस्ट किए गए संस्करण का इस्तेमाल करें। Amazon OpenSearch (पूर्व Amazon Elasticsearch) जैसे प्रबंधित उत्पाद काम करेंगे मगर इनमें विशेषताओं के अनुसार अतिरिक्त कॉन्फ़िगरेशन की ज़रूरत पड़ सकती है। उदाहरणस्वरूप, Amazon OpenSearch HTTPS के पोर्ट 443 पर सिर्फ Elasticsearch API अनुरोधों की अपेक्षा करता है (यानी यह डिफ़ॉल्ट Elasticsearch पोर्ट 9200 को सार्वजनिक नहीं करता), इसलिए किसी TLS-युक्त प्रॉक्सी (जैसे Nginx) की मदद से CirrusSearch को सक्षम करके Amazon OpenSearch क्लस्टर के साथ संपर्क किया जा सकता है।

Elastica
  • Elastica एक PHP लाइब्रेरी है जिसकी मदद से Elasticsearch से संपर्क किया जा सकता है। नीचे की विधि के अनुसार Elastica स्थापित करें।

अन्य
  • CirrusSearch एक्सटेंशन द्वारा कार्यों को हैंडल करने की प्रक्रिया की वजह से Redis में कार्य सेटअप कर लेना सुझाया जाता है ताकि Notice: unserialize(): Error at offset 64870 of 65535 bytes in JobQueueDB.php जैसे संदेश और Unsupported operand types जैसी त्रुटियाँ न आए। टास्क T157759 देखें।

स्थापना

हालाँकि नीचे की विधि में बताया गया है कि गिट से स्थापित करते समय सिर्फ Composer चलाने की ज़रूरत है, सभी PHP निर्भरताओं को स्थापित करने के लिए इसे वैसे भी प्रकाशित करने की ज़रूरत पड़ सकती है।

  • फ़ाइलों को डाउनलोड करें और अपने extensions/ फ़ोल्डर के Elastica नामक डिरेक्ट्री में डालें।
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica
  • सिर्फ गिट से डाउनलोड करते समय एक्सटेंशन डिरेक्ट्री से composer install --no-dev प्रकाशित करके PHP निर्भरताएँ स्थापित करने के लिए Composer चलाएँ। (संभावित जटिलताओं के लिए टास्क T173141 देखें।)
  • अपने LocalSettings.php फ़ाइल के अंत में निम्न कोड जोड़ें:
    wfLoadExtension( 'Elastica' );
    
  •   पूर्ण – अपने विकि पर Special:Version पर जाकर देखें कि एक्सटेंशन को सफलतापूर्वक स्थापित किया गया है कि नहीं।

CirrusSearch

  • फ़ाइलों को डाउनलोड करें और अपने extensions/ फ़ोल्डर के CirrusSearch नामक डिरेक्ट्री में डालें।
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch
  • सिर्फ गिट से डाउनलोड करते समय एक्सटेंशन डिरेक्ट्री से composer install --no-dev प्रकाशित करके 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:

  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
      


अपग्रेड करना

कृपया CirrusSearch UPGRADE फ़ाइल में अपग्रेड करने की विधि का पालन करें।

कॉन्फ़िगरेशन

CirrusSearch के कॉन्फ़िगरेशन पैरामीटरों को "settings.txt" फ़ाइल में प्रलेखित किया गया है। CirrusSearch कॉन्फ़िगरेशन प्रोफ़ाइलों पर प्रलेख भी देखें।

अगर सदस्य बड़े अक्षर वाले MySQL डेटाबेस के नाम का इस्तेमाल कर रहा हो, जैसे "MyWikiDatabaseName", Elasticsearch CirrusSearch के लिए इनडेक्स नहीं कर पाएगा। इसके समाधान में CirrusSearch $wgCirrusSearchIndexBaseName कॉन्फ़िगरेशन पैरामीटर प्रदान करता है जिसे सदस्य को सेट करना होगा, जैसे $wgCirrusSearchIndexBaseName = 'mywikidatabasename';

हुक

CirrusSearch एक्सटेंशन कई हुक्स परिभाषित करता है जिसका इस्तेमाल करके दूसरे एक्सटेंशन्स मूल स्केमा को बढ़ाकर दस्तावेज़ों को बदल सकते हैं। निम्नलिखित हुक उपलब्ध हैं:

  • CirrusSearchAnalysisConfig - विवेचन के लिए कॉन्फ़िगरेशन में हुक करने देता है
  • CirrusSearchMappingConfig - फ़ील्ड्स के मानचित्रण को कॉन्फ़िगर करने देता है
  • CirrusSearchBuildDocumentParse - एक्सटेंशनों को किसी पृष्ठ से बने ElasticSearch दस्तावेज़ को बदलने की अनुमति देता है
  • CirrusSearchBuildDocumentLinks - एक्सटेंशनों को दस्तावेज़ों की आवक और जावक कड़ियों को प्रोसेस करने की अनुमति देता है
  • CirrusSearchBuildDocumentFinishBatch - बुलाया जाता है जब पृष्ठों के किसी समूह को इनडेक्स किया जाए
  • CirrusSearchAddQueryFeatures - एक्सटेंशनों को क्वेरी पार्सर की सुविधाएँ जोड़ने देता है
  • CirrusSearchScoreBuilder - एक्सटेंशनों को संसाधन रीस्कोर बिल्डर फ़ंक्शन्स परिभाषित करने देता है
  • CirrusSearchProfileService - एक्सटेंशनों को खोज के कई हिस्से और कॉन्फ़िगरेशन्स घोषित करने देता है

API

CirrusSearch की सुविधाओं का इस्तेमाल API क्वेरीज़ में किया जा सकता है। खोज साधारण खोज API action=query&list=search द्वारा किया जाता है; आप सिर्फ CirrusSearch पर उपलब्ध कुछ सुविधाओं का इस्तेमाल कर सकते हैं, जैसे morelike: विशेष उपसर्ग जिससे आप Marie Curie और radium से संबंधित दूसरे पृष्ठ ढूँढ़ सकते हैं: [$urlquery api.php?action=query&list=search&srsearch=morelike:Marie_Curie%7Cradium&srlimit=10&srprop=size&formatversion=2]

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

अनुकूलित API-ओं और पैरामीटरों से CirrusSearch के कॉन्फ़िगरेशन और डीबग की जानकारी पाई जा सकती है:

ये भी देखें

साधारण कड़ियाँ
डीबगिंग

स्थानीय विकास

Elastic Search सेवा को Vagrant रोल (cirrussearch) और मीडियाविकि 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 प्लगिन्स नहीं होंगी मगर यह बुनियादी परीक्षण करवा सकता है।