Help:CirrusSearch
Let op: Als u deze pagina bewerkt, gaat u akkoord met het vrijgeven van uw bijdragen onder de CC0. Zie Helppagina’s Publiek Domein voor meer informatie. |
De snelste manier om informatie op Wikimedia-projecten te vinden, is door rechtstreeks te zoeken. Op elke pagina bevindt zich een veld zoeken.
CirrusSearch is een MediaWiki extensie die gebruikmaakt van Elasticsearch om de standaard zoekfunctie van MediaWiki van geavanceerde zoekfuncties te voorzien. De Wikimedia Foundation gebruikt CirrusSearch op alle Wikimedia-projecten. Deze pagina beschrijft de functies van CirrusSearch. Indien u hier geen antwoord vindt op uw vraag, kunt u op de overlegpagina terecht, waar iemand ze zal beantwoorden.
Voor informatie over de MediaWiki extensie : Extension:CirrusSearch .
Voor het gebruik op Wikidata, zie Help:Extension:WikibaseCirrusSearch .
Hoe het werkt
Voer zoekwoorden en woordgroepen (phrases) in, en druk op ↵ Enter of Return op het toetsenbord of gebruik het vergrootglas, Zoeken of de knop Ga.
Als een pagina dezelfde titel heeft als die u hebt ingevoerd, springt u rechtstreeks naar die pagina. Anders doorzoekt het alle pagina's op de wiki en presenteert het een lijst met artikelen die overeenkomen met uw zoektermen, of een bericht dat u informeert dat geen enkele pagina alle keywords en woordgroepen bevat.
Als u op de knop "Zoeken" klikt zonder iets in te vullen, wordt u naar Special:Search geleid, wat u extra zoekopties geeft (ook beschikbaar in elke lijst met zoekresultaten)
Het kan handig zijn om een zoekopdracht te beperken tot pagina's binnen een bepaalde namespace, bijvoorbeeld alleen zoeken binnen de pagina's User. Controleer de namespaces die u nodig hebt voor deze zoekopdracht.
Wat is er verbeterd?
CirrusSearch biedt drie grote verbeteringen ten opzichte van de standaard MediaWiki-zoekfunctie, namelijk:
- Betere ondersteuning voor het zoeken in andere talen.
- Sneller bijwerken van de zoekindex, wat betekent dat veranderingen in artikelen veel sneller in de zoekresultaten worden weergegeven.
- Uitbreiding van sjablonen, wat betekent dat alle inhoud uit een sjabloon nu wordt weergegeven in de zoekresultaten.
Hoe vaak wordt de zoekindex bijgewerkt?
Er zijn twee belangrijkste zoekindexen die u moet overwegen:
De eerste is de full-text zoeken, op Special:Search. Deze index wordt in bijna realtime bijgewerkt. Veranderingen in pagina's moeten binnen enkele minuten in de zoekresultaten verschijnen, maar 30 minuten wordt nog steeds als normale werking beschouwd. Veranderingen van sjablonen moeten binnen enkele minuten van kracht worden in artikelen die het sjabloon bevatten, het kan tot en met enkele uren duren, afhankelijk van het aantal pagina's dat het sjabloon gebruikt. Een 'null' bewerking in het artikel zal de wijziging forceren, maar dat zou niet nodig moeten zijn als alles goed gaat.
De tweede index die u moet overwegen is het fuzzy auto-complete zoeken op titel. Deze index wordt één keer per dag bijgewerkt en weerspiegelt wat in de volledige zoekindex is gevonden op het moment dat de index werd bijgewerkt. Afhankelijk van de timing kan het bij een nieuwe pagina twee dagen duren om te worden gevonden in de fuzzy titel autocomplete. Als dit onaanvaardbaar is voor een bepaald gebruik, kan binnen de zoekopties voor gebruikers het aanvullen van de titel worden gewijzigd in klassiek zoeken naar voorvoegsels die de zoekindex voor full-text zoeken gebruikt.
Zoeksuggesties
De zoeksuggesties die u krijgt wanneer u typt in het zoekvak dat naar de kandidatenpagina's wordt weergegeven, zijn gesorteerd op basis van een ruwe maatstaf voor de kwaliteit van het artikel. Hierbij wordt rekening gehouden met het aantal inkomende wikilinks, de grootte van de pagina, het aantal externe links, het aantal koppen en het aantal doorverwijzingen.
Zoeksuggesties kunnen worden overgeslagen en queries gaan direct naar de zoekresultatenpagina.
Voeg een tilde ~
toe voor de query.
Voorbeeld: "~Frida Kahlo".
De zoeksuggesties worden nog steeds weergegeven, maar als u op elk gewenst moment op de Enter-toets drukt, gaat u naar de pagina met zoekresultaten.
Voor sommige talen is het accent/diacritische opvouwen ingeschakeld; de details zijn taalspecifiek.
The algorithm used to rank suggestions is described in more detail at Extension:CirrusSearch/CompletionSuggester#Ranking criteria.
Zoeken in volledige tekst
Een "zoeken in volledige tekst" is een "zoeken op index". Alle pagina's worden opgeslagen in de wiki-database, en alle woorden in de niet-doorverwijspagina's worden bewaard in de zoekdatabase, die een index is voor de praktisch volledige tekst van de wiki. Elk zichtbaar woord wordt geïndexeerd in de lijst met pagina's waar het wordt gevonden, dus een zoekopdracht naar een woord is net zo snel als het opzoeken van een enkel record.[1] Voorts wordt de zoekindex binnen enkele seconden bijgewerkt na eventuele wijzigingen in de tekst.
Er zijn veel indexen van de "volledige tekst" van de wiki om de vele soorten zoekopdrachten die nodig zijn te vergemakkelijken. De volledige wikitext wordt vaak geïndexeerd op vele indexen voor speciale doeleinden, waarbij elk de wikitext op de manier analyseert die het gebruik optimaliseert. Voorbeelden van indexen zijn:
- "Hulptekst", inclusief "hatnotes", bijschriften, inhoudsopgave en alle wikitext die is geclassificeerd met een HTML-attribuut class=searchaux.
- "Lead-in" tekst is de wikitext tussen de bovenkant van de pagina en de eerste kop.
- De tekst "categorie" indexeert de aanbiedingen onderaan.
- Sjablonen zijn geïndexeerd. Als de getranscludeerde woorden van een sjabloon veranderen, worden alle pagina's die het transcluderen bijgewerkt. (Dit kan lang duren, afhankelijk van een taakwachtrij.) Als de subsjablonen die door een sjabloon worden gebruikt, veranderen, wordt de index bijgewerkt.
- Documentinhoud die is opgeslagen in de namespace File/Media wordt nu geïndexeerd. Duizenden formaten worden herkend.
Er is ondersteuning voor tientallen talen, maar alle talen zijn gewild. Er is een lijst van de nu ondersteunde talen op elasticsearch.org; zie hun documentatie over bijdragen om verzoeken of patches in te dienen. Er worden Open source bibliotheken van derden gebruikt om aanvullende talen te ondersteunen die niet onder Elasticsearch vallen.
CirrusSearch zal uw query optimaliseren en uitvoeren. De resulterende titels worden gewogen op relevantie en sterk nabewerkt, 20 tegelijk, voor de zoekresultatenpagina. Bijvoorbeeld, uit het artikel worden fragmenten gehaald en in de tekst worden zoekwoorden in een dikke tekst benadrukt.
Zoekresultaten gaan vaak vergezeld van verschillende voorlopige rapporten. Deze omvatten Bedoelde u (spellingcorrectie), en als er anders geen resultaten zouden worden gevonden, staat er Resultaten weergeven voor (querycorrectie) en zoeken in plaats van (uw zoekopdracht).
Zoekfuncties omvatten ook:
- Sorteren van navigatievoorstellen naar het aantal inkomende links.
- Begin met het tilde-tekens
~
om navigatie en suggesties te uitschakelen op een manier die ook de paginavolgorde behoudt. - Smart-matching karakters door niet-toetsenbord karakters te normaliseren (of weer te geven) in toetsenbord karakters.
- Op de zoekresultatenpagina worden woorden en woordgroepen die overeenkomen, in het gedrukte getal onderstreept. De highlighter is een cosmetische analyse hulpmiddel, terwijl de zoek-indexing analyzer de pagina eigenlijk vindt, en deze kunnen niet 100% synchroniseren, vooral voor reguliere expressies. De highlighter kan meer of minder nauwkeurig overeenkomen met de indexator.
Woorden, woordgroepen en modifiers
De basis zoekterm is een woord of een "woordgroep tussen aanhalingstekens". Details variëren per taal, vooral voor talen zonder spaties, maar zoekmachines herkennen meestal een "woord" als:
- een reeks cijfers
- een reeks letters
- subwoorden tussen letters/cijferovergangen, zoals in txt2regex
- subwoorden in een samengestelde naam met behulp van CamelCase
Een "stopwoord" is een woord dat wordt genegeerd (omdat het gebruikelijk is, of om andere redenen). De lijst met stopwoorden is taal-specifiek en niet alle talen ondersteunen stopwoorden.[2] Een bepaalde zoekterm komt overeen met content (weergegeven op de pagina). Om in plaats daarvan te matchen met wikitext, gebruikt u de zoekparameter insource (zie sectie hieronder). Elke zoekparameter heeft zijn eigen index en interpreteert de gegeven term op zijn eigen manier.[3]
Spatiëring tussen woorden, woordgroepen, parameters en invoer van parameters kan royale gevallen van witruimte en grijsruimtetekens omvatten. "Grijsruimtetekens" zijn alle niet-alfanumerieke ~!@#$%^&()_+-={}|[]\:";'<>?,./ karakters. Een gemengde reeks van grijsruimtetekens en witruimtetekens, is 'grijsruimte' en wordt behandeld als één grote woordgrens. Grijsruimte is de manier waarop indexen worden gemaakt en queries worden geïnterpreteerd.[4]
Twee uitzonderingen zijn waar 1) een embedded:colon één woord is (het wordt behandeld als een letter), en 2) een ingesloten komma ,, zoals in 1,2,3, wordt behandeld als een getal. Grijsruimtetekens worden anders genegeerd, tenzij ze vanwege de querysyntaxis kunnen worden geïnterpreteerd als wijzigingstekens.
De modificatoren zijn ~ * \? - " ! . Afhankelijk van de plaatsing in de syntaxis kunnen ze worden toegepast op een term, een parameter of op een hele query. Woord- en woordgroepmodificaties zijn de wildcard, nabijheid en fuzzy zoekopdrachten. Elke parameter kan zijn eigen modificatoren hebben, maar in het algemeen:
- Een fuzzy-woord of fuzzy-woordgroep in zoekopdracht kan een tilde
~
karakter (en een getal dat de graad vertelt) achtervoegen. - Een tilde
~
-teken voor de eerste term van een query garandeert zoekresultaten in plaats van eventuele navigatie. - Een wildcard teken in een woord kan een (escaped) vraagteken zijn \? voor één teken of een asterisk * voor nul of meer tekens.
- Logica kan AND en OR interpreteren, maar parameters niet. Merk op dat de operatoren AND en OR nu niet op de traditionele logica functioneren! Zie voor meer informatie logische operatoren.
- Logica begrijpt - of ! die aan een term voorafgaan om de gebruikelijke betekenis van de term om te keren van "matchen" naar "uitsluiten".
- Aanhalingstekens rond woorden markeren een zoekopdracht naar "exacte uitdrukking". Voor parameters zijn zij ook nodig om de invoer van meer woorden aan te geven.
- Stammen is automatisch, maar kan worden uitgeschakeld met behulp van een "exacte woordgroep".
Een woordgroepzoekopdracht kan worden geïnitieerd door verschillende hints naar de zoekmachine. Elke methode van hinten heeft als neveneffect hoe tolerant de afstemming van de woordvolgorde zal zijn. Voor greyspace, camelCase of txt2number hints:
- gegeven words-joined_by_greyspace(characters) of wordsJoinedByCamelCaseCharacters vindt het words joined by... characters, in hun kale of grijsruimte vormen.
- txt2number zal overeenkomen met
txt 2 number
oftxt-2.number
. - Stopwoorden zijn ingeschakeld voor de randgevallen (in de rand) van een grijsruimte of camelCase-woordgroep. Een voorbeeld met the, of, en a is dat the_invisible_hand_of_a overeenkomt met
invisible hand
binnen de tekstmeetings invisible hand shake
.
Een "zoek in plaats daarvan" wordt aangedreven wanneer een algemeen onbekend woord in een woordgroep wordt genegeerd.
Elk van de volgende soorten overeenkomstige woordgroepen bevat en verruimt de overeenkomst-tolerantie van het vorige:
- Een "exacte woordgroep" "in aanhalingstekens" zal (matchen met) grijsruimte tolereren. Als "exact_phrase" of "exact phrase" wordt gegeven, komt het overeen met
"exact]phrase"
. - Een grijsruimte-woordgroep initieert stam- en stopwoord controles.
- Met CamelCase zal het aanvullend overeenkomen met
camelcase
, in alle kleine letters, omdat CirrusSearch niet hoofdlettergevoelig is bij het matchen. Merk op dat het CamelCase matchen niet voor alle talen is ingeschakeld.
Sommige parameters interpreteren grijsruimte-woordgroepen, maar andere parameters, zoals insource
, interpreteren alleen de gebruikelijke "woordgroep in aanhalingstekens".
Woordgroep zoeken | parserfunction | parserFunction | parser function | parser-function | parser:function | parSer:funcTion |
---|---|---|---|---|---|---|
parserfunction | ||||||
"parser function" | ||||||
parser_function | ||||||
parserFunction | ||||||
"parser:function" | ||||||
"parser_function" | ||||||
"parSer_funcTion" | ||||||
parSer_FuncTion |
Let op, het gebruik van stammen is niet hoofdlettergevoelig!
Let op hoe de zoekopdracht "exacte woordgroep" het teken embedded:colon als een letter interpreteert, maar niet het embedded_underscore. Het vergelijkbare vindt plaats met de komma , in een getal.
Op basis van in:this:word
zal CirrusSearch, wanneer het zich in een context van 'exacte woordgroep' bevindt (inclusief de context van de parameter insource), niet overeenkomen met in
, this
of word
, maar zal het dan alleen overeenkomen met in:this:word
.
Onthoud anders dat voor CirrusSearch woorden letters, cijfers of een combinatie van de twee zijn, hoofdletters doen er niet toe.
De gewone woordzoeker maakt gebruik van het spatieteken en is agressief met stammen, en wanneer dezelfde woorden worden vergezeld door grijsruimtetekens of camelCase, zijn ze agressief met woordgroepen en subwoorden.
Wanneer in een grijsruimte-woordgroep gebruikelijke woorden zoals "van" of "de" worden opgenomen, worden ze genegeerd, zodat ze agressiever overeenkomen.
Een gijsruimte-woordgroep zoekterm, een camelCase of een txt2number term komt overeen met de aangegeven woorden. U kunt elk van die drie vormen gebruiken.[5] camelcase komt overeen met camelCase omdat Search niet gevoelig is voor hoofdletters, maar camelcase past bij camelcase omdat camelCase agressiever is. Net als de rest van Search zijn de subwoorden "woorden" niet gevoelig voor hoofdletters. Bij vergelijking is de "exacte woordgroep" grijsruimte georiënteerd en negeert hij de numerieke of letter-case overgangen en stemming. "woordgroepen tussen quotes" zijn niet gevoelig voor hoofdletters.
Uit de tabel kunnen we vermoeden dat het basiszoeken parser_function -"parser function" de som is van het zoeken parserFunction
en parser<stems> function<stems>
.
Door met nummers te zoeken, zouden we zien dat:
plan9
of Plan_9 past bij elk van:plan9
,plans 9
,planned 9th
,(planned) 9.2
,"plans" (9:24)
- "plan9" past bij
plan9
(hooflettergevoelig) - Plan*9 past bij
plan9
enplanet4589
.
De ster *, het jokerteken komt overeen met een reeks letters en cijfers binnen een opgebouwde woord, maar nooit het beginteken. Een of meer tekens moeten aan het * teken voorafgaan.
- Wanneer * overeenkomt met getallen, wordt een komma beschouwd als onderdeel van een getal, maar het decimale punt wordt beschouwd als een grijsruimte-teken en zal het als twee getallen zien.
- Binnen een "exacte woordgroep" wordt * behandeld als een grijsruimte-teken en niet als een wildcardteken, dus het scheidt de woorden.
De \? wildcard vertegenwoordigt één letter of nummer; *\? wordt ook geaccepteerd, maar \?* wordt niet erkend.
De wildcards zijn voor basiswoord, woordgroep en insource zoekopdrachten, en kunnen ook een alternatief zijn voor (sommige) geavanceerde reguliere expressie zoekopdrachten (later behandeld).
Het plaatsen van een tilde ~ teken na een woord of woordgroep activeert een fuzzy zoekopdracht.
- Voor een woordgroep wordt het een nabijheid (proximity) zoekopdracht genoemd, omdat nabijheid woorden worden getolereerd tot een benadering in plaats van exacte woordgroep.
- Bijvoorbeeld, "exact one two phrase"~2 komt overeen met
exact phrase
. - Voor een woord betekent het extra tekens of gewijzigde tekens.
- Voor een woordgroep vereist een fuzzy zoeken een geheel getal dat aangeeft hoeveel extra woorden er in passen, maar voor een woord kan een fuzzy zoekopdracht een decimale breuk hebben, standaard als word~0.5 (word~.5), waarbij maximaal twee letters verwisseld, veranderd of toegevoegd kunnen worden gevonden, maar nooit de eerste twee letters.
- Voor een dichtbijzijn woordgroep kan een groot aantal worden gebruikt, maar dat is een "dure" (langzame) zoekopdracht.
- Voor een woord is word~2 het meest fuzzy met een bewerkingsafstand van 2 (voorkeur), en $wordtild9 is het minst fuzzy, en $wordtillde12 is helemaal niet fuzzy.
flowers algernon | Flowers for Algernon | flowers are for Algernon | Flowers a1 2b 3c 4f 5j 6l 7j 8p q9 z10 for Algernon | |
"flowers algernon" | ||||
"flowers algernon"~0 | ||||
"flowers algernon"~1 | ||||
"flowers algernon"~2 | ||||
"flowers algernon"~11 | ||||
"algernon flowers"~1 | ||||
"algernon flowers"~2 | ||||
"algernon flowers"~3 | ||||
"algernon flowers"~4 | ||||
"algernon flowers"~13 |
Voor de nabijheid die nodig is om in omgekeerde (rechts naar links) volgorde te overeenkomen, tel en verwerpt u alle extra woorden en voeg dan twee keer de totale telling van de overgebleven woorden minus één toe. (Met andere woorden, voeg twee keer zoveel delen toe als het aantal delen). Voor het volledige algoritme voor nabijheid zie Elasticsearch slop.
Quotes sluiten het stammen uit, "but appending"~ de tilde reactiveert het stammen.
flowers | flower | Flowers for Algernon | flower for Algernon | ||
flowers | Stammen is actief. | ||||
"flowers" | Nabijheid zoeken schakelt stammen uit. | ||||
"flowers"~ | Nabijheid plus stammen door het toevoegen van een tilde. | ||||
"flowers for algernon" | Nabijheid zoeken schakelt stammen uit. | ||||
"flowers for algernon"~ | Nabijheid plus stammen door het toevoegen van een tilde. | ||||
"flowers algernon"~1 | Nabijheid zoeken schakelt stammen uit. | ||||
"flowers algernon"~1~ | Nabijheid plus stammen door het toevoegen van een tilde. |
Insource
≥ 1.24 Gerrit change 137733 |
Insource-zoekopdrachten kunnen worden gebruikt om elk woord te vinden dat op een pagina wordt weergegeven, maar het is gemaakt voor het vinden van elke woordgroep die u zou kunnen vinden - inclusief MediaWiki opmaak (ook bekend als wikicode), op elke pagina behalve doorverwijzingen. Deze woordgroep gaat volledig voorbij aan grijsruimte: insource: "state state autocollapse" komt overeen met |state={{{state|autocollapse}}}
.
insource: word insource: "word1 word2" |
Grijsruimte tekens worden genegeerd, net als bij woordzoeken en zoekopdrachten met exacte woordgroepen. |
insource:/regexp/ insource:/regexp/i |
Dit zijn reguliere expressies. Ze zijn niet efficiënt, dus er zijn er maar een paar tegelijk toegestaan in het zoekcluster, maar ze zijn erg krachtig. De reguliere expressie is standaard hoofdlettergevoelig. Met de extra i kan worden gekozen voor hoofdletterongevoeligheid, wat nog minder efficiënt is.
|
Insource complementeert zichzelf. Aan de ene kant heeft het een volledige tekstzoekopdracht voor elk woord in de wikitext, onmiddellijk. Aan de andere kant kan het een reguliere expressie zoekopdracht verwerken voor elke string.[6] Een regex scant alle teksten in een bepaalde lijst van pagina's; ze hebben geen woordindex om dingen te versnellen, en het proces wordt onderbroken als het langer dan twintig seconden loopt. De regexs lopen als laatste in een query, dus om onnodige scanning op karakterniveau te beperken, moet elke regex query andere zoekwoorden bevatten om het aantal documenten dat gescand moet worden te beperken.[7] Vaak is de beste kandidaat om toe te voegen aan de regex-query insource:/arg/ insource:/arg/ 2, waarbij arg hetzelfde is (en geen jokertekens gebruikt).
De syntaxis voor de regex is $source geen spatie en dan /regexp/. (Geen andere parameter verbiedt een spatie. Alle parameters behalve insource:/regexp/ accepteren spatie na de dubbele punt.)
De rollen Insource indexed-search en regexp-search zijn in veel opzichten vergelijkbaar:
- Beide zoeken alleen in wikitekst.
- Geen van beide vindt dingen "gesourced" door een transclusie.
- Stammen, fuzzy of nabijheidszoekopdrachten werken ook niet.
- Beide willen de minste resultaten, en beide werken sneller als ze vergezeld gaan van een andere clausule.
Maar geïndexeerde zoekopdrachten negeren allemaal grijsruimte; Zoekopdrachten met jokertekens komen niet overeen met grijsruimte, dus reguliere expressies zijn de enige manier om een exacte tekenreeks van alle tekens te vinden, bijvoorbeeld een reeks van twee spaties. Reguliere expressies (regexes) zijn een geheel andere klasse van zoekmachines die het matchen van een letterlijke strang gemakkelijk maken (basis, beginnersgebruik) en het matchen door meta-teken expressies mogelijk maken (geavanceerd gebruik) op de wiki. Zie hieronder Reguliere expressie zoeken.
"in-law" insource:/-in-law/i
of "kung" insource:/!kung/i
.
Voorvoegsel en namespace
Als u een term als file:
(een namespace) toevoegt aan een zoekopdracht, worden de resultaten beperkt tot een specifieke namespace , in plaats van de hele wiki te doorzoeken.
De standaard namespace is "Main".
Er kan hoogstens één namespace worden ingesteld in het zoekvak.
Het moet de eerste term in de query zijn, of, indien gebruikt als onderdeel van een term prefix:
, moet worden weergegeven als de laatste term in de query.
Twee of meer namespaces kunnen worden doorzocht vanuit het deelvenster Geavanceerd van de zoekbalk bovenaan elke pagina met zoekresultaten, Special:Search. Uw zoekgebied, als profiel van namespaces, kan hier worden ingesteld. De lijst met namespaces wordt dan weergegeven op de eerste pagina met toekomstige zoekresultaten om het zoekdomein van de zoekresultaten aan te geven. Om dit uit te schakelen, selecteert u de standaard namespace (tussen haakjes), selecteert u "Onthouden" en drukt u op Zoeken.
De zoekbalk stelt grafisch een zoekdomein in en geeft dit aan. "Inhoudspagina's" (mainspace), "Multimedia" (File), "Alles" (all plus File), "Vertalingen", enz., zijn hyperlinks die de query in dat domein kunnen activeren, en dit vervolgens aangeven door inactief (donker) te worden. Maar de zoekopdracht overschrijft de zoekbalk. Wanneer een namespace of voorvoegsel wordt gebruikt in de query, kunnen de activeringen en indicaties van de zoekbalk misleidend zijn, dus de zoekbalk en het zoekvak zijn elkaar uitsluitende (niet complementaire) manieren om het zoekdomein in te stellen.
Een namespace term overschrijft de zoekbalk en een prefix:
term overschrijft een namspace.
Als u een namespace wilt opgeven, voegt u deze toe met een dubbele punt, bijv., talk:
.
Gebruik all:
om te zoeken in alle namespaces, of :
(een enkele dubbele punt) om alleen de mainspace van het artikel te doorzoeken.
De term van all:
omvat niet de namespace File:, die media-inhoud bevat die op Commons wordt bewaard, zoals PDF, die allemaal geïndexeerd en doorzoekbaar zijn.
Wanneer File is betrokken, heeft een namespace-modifier local:
een effect, anders wordt het genegeerd.
Zoals bij zoekparameters, moeten local:
en all:
kleine letters zijn.
Namespaces zijn echter hoofdlettergevoelig.
Namespace aliassen worden geaccepteerd.
talk: "Wind clock" | Zoekt pagina's in de namespace Talk waarvan de titel of tekst de zin "wind clock" bevat. |
file: "Wind clock" | Zoekt pagina's in de namespace File, waarvan de titel, tekst of media-inhoud de woordgroep "wind clock" bevat. |
file: local: "Wind clock" | Filtert de resultaten uit van Commons wiki. |
local: "Wind clock" | Genegeerd. Doorzoekt de mainspace. Local wordt genegeerd, tenzij ook File betrokken is. |
prefix:
De parameter prefix:
komt overeen met een willekeurig aantal eerste tekens van alle paginanamen in één namespace.[8]
Wanneer de eerste letters overeenkomen met een namespace en dubbele punt, verandert het zoekgebied.
Als u alleen een namespace gebruikt, komt prefix:
overeen met alle paginanamen. Met slechts één teken kan het niet -
(streepje), '
(aanhalingsteken) of "
(dubbel aanhalingsteken) zijn. Het laatste teken mag geen dubbele punt zijn.
Voor paginanamen die overeenkomen, komen ook hun subpagina's per definitie overeen.
De parameter prefix:
laat geen ruimte toe voor een namespace, maar laat spaties toe voor de paginanaam.
Deze term staat altijd aan het einde, zodat een paginanaam tekens als aanhalingstekens kunnen bevatten ("
).
prefix:cow | Zoekt pagina's in de mainspace waarvan de titel begint met de drie letters c o w. |
domestic prefix:cow | Zoekt pagina's in de mainspace waarvan de titel begint met de drie letters c o w en die het woord "domestic" bevatten. |
domestic prefix:cow/ | Maakt een lijst van alle bestaande subpagina's van Cow, maar alleen als ze het woord domestic' bevatten. Dit is een veel voorkomende zoekopdracht en wordt vaak gebouwd met behulp van een speciale URL-parameter prefix=. |
domestic prefix:Talk:cow/ | Maakt een lijst van alle subpagina's van Talk:cow, maar alleen als ze het woord domestic' bevatten. |
1967 prefix:Pink Floyd/ | Maakt een lijst van subpagina's van Pink Floyd, maar alleen als het ook het woord 1967 bevat. |
De extensie Translate creëert een soort "taal namespace" van vertaalde versies van een pagina. In tegenstelling tot namespace of prefix, die het oorspronkelijke zoekdomein creëren, is de parameter inlanguage echter een filter ervan. (Zie de volgende sectie.)
Inhoud uitsluiten van de zoekindex
Inhoud kan worden uitgesloten van de zoekindex door class="navigation-not-searchable"
toe te voegen. Hiermee wordt CirrusSearch geïnstrueerd om deze inhoud uit de zoekindex te negeren (zie taak T162905 voor meer informatie).
Bovendien kan inhoud worden gemarkeerd als aanvullende informatie door class="searchaux"
toe te voegen.
Hierdoor wordt CirrusSearch geïnstrueerd om de inhoud van de hoofdtekst te verplaatsen naar een hulpveld dat minder belangrijk is voor zoeken en het markeren van fragmenten.
Dit onderscheid wordt gebruikt voor items zoals beschrijvingen van miniaturen van afbeeldingen, 'zie ook'-secties, enz.
Filters
Een filter heeft meerdere instanties of genegeerde instanties, of het kan worden uitgevoerd als een zelfstandige filtering van een zoekdomein. Een query wordt gevormd als termen die een zoekdomein filteren.
Door een ander woord, woordgroep of parameter toe te voegen, wordt er meer gefilterd. Een zeer verfijnd zoekresultaat kan zeer veel J/N-filters hebben wanneer elke pagina in de resultaten wordt geadresseerd. (In dit geval is de rangschikking grotendeels irrelevant.) Filteren is van cruciaal belang voor het toevoegen van een regex-term; U wilt zo min mogelijk pagina's voordat u een reguliere expressie toevoegt (omdat deze nooit een voorbereide index kan hebben voor de zoekopdracht).
Een namespace is een opgegeven zoekdomein, maar geen filter omdat een namespace niet zelfstandig wordt uitgevoerd. Een prefic zal ontkennen, dus is het een filter. De onderstaande zoekparameters zijn filters waarvoor meerdere instanties kunnen zijn.
Insource (hierboven behandeld) is ook een filter, maar insource:/regexp/ is geen filter. Filters en alle andere zoekparameters zijn met kleine letters. (Namespaces zijn een uitzondering, omdat ze niet hoofdlettergevoelig zijn.)
Intitle en incategory
Zoekopdrachten naar woorden en woordgroepen komen overeen in een titel en komen overeen in het categorievak onder aan de pagina. Maar met deze parameters kunt u alleen titels of alleen categorie selecteren.
- cow*
- Zoekt artikelen waarvan de titel of tekst woorden bevat die beginnen met cow
- intitle:foo
- Zoekt artikelen waarvan de titel foo bevat. Stemming is ingeschakeld voor foo.
- intitle:"fine line"
- Zoekt artikelen waarvan de titel fine line bevat. Stemmen is uitgeschakeld.
- intitle:foo bar
- Zoek artikelen waarvan de titel foo bevat en waarvan de titel of tekst bar bevat.
- -intitle:foo bar
- Zoekt artikelen waarvan de titel geen foo bevat en waarvan de titel of tekst bar bevat.
- incategory:Music
- Zoekt artikelen die in Category:Music staan
- incategory:"music history"
- Zoekt artikelen die in Category:Music_history staan
- incategory:"musicals" incategory:"1920"
- Zoekt artikelen die zowel in Category:Musicals als in Category:1920 staan
- -incategory:"musicals" incategory:"1920"
- Zoekt artikelen die niet in Category:Musicals staan, maar wel in Category:1920
Intitle en incategory zijn oude zoekparameters. Incategory doorzoekt niet langer automatisch de subcategorieën, maar u kunt nu handmatig meerdere categorieën toevoegen.
≥ 1.31 Gerrit change 413896 |
Sinds MediaWiki 1.31-wmf.23 worden zoekopdrachten met reguliere expressies ondersteund voor intitle:
- intitle:/regex/, intitle:/regex/i
Alles wat in de #Reguliere expressie zoeken wordt geschreven, is ook geldig voor deze zoekopdrachten, inclusief waarschuwingen.
Deepcategory
Diep zoeken in categorieën maakt het mogelijk om in categorie en alle subcategorieën te zoeken. De diepte van de boom is momenteel beperkt tot 5 niveaus (configureerbaar) en het aantal categorieën is beperkt door 256 (configureerbaar). De diepe zoekopdracht maakt gebruik van SPARQL Categorieservice van WDQS. Trefwoorden zijn deepcategory of deepcat. Voorbeeld:
- deepcat:"musicals"
- Zoek artikelen die in Category:Musicals of een van de subcategorieën staan.
De gadget DeepCat die de parameter eerder implementeerde, is in januari 2020 gestopt.
Linksto
Linksto vindt wikilinks naar een bepaalde naam, niet links naar inhoud. De invoer is de canonieke, hoofdlettergevoelige, paginanaam. Het moet exact overeenkomen met de titelregel van de inhoudspagina voordat de titel van de hoofdletter wordt gewijzigd. (Het moet overeenkomen met de { {FULLPAGENAME}}, bijvoorbeeld Help:CirrusSearch/nl.)
Linksto vindt geen doorverwijzingen. Het vindt alleen [[wikilinks]], zelfs als ze zijn gemaakt door een sjabloon. Er wordt geen link gevonden die door een URL is gemaakt, zelfs niet als die URL een interne wikilink is.
Om alle wiki-links naar een "Help:Cirrus Search" te vinden, als "Help:Searching" en "H:S" daarnaartoe doorverwijzen:
- linksto: "Help:Cirrus Search"
- linksto: Help:Searching
- linksto: H:S
CirrusSearch -linksto: Help:CirrusSearch
vindt artikelen die "CirrusSearch" vermelden, maar niet in een wikilink.
Hastemplate
U kunt het sjabloongebruik opgeven met hastemplate: template
. Voer de canonieke paginanaam in om al het gebruik van het sjabloon te vinden, maar gebruik een van de doorverwijspagina's om alleen die naamgeving te vinden. Aliassen in de namespace worden geaccepteerd, hoofdletters worden volledig genegeerd en doorverwijzingen worden gevonden, allemaal in één namespace opdracht. (Vergelijk boost-template geen standaard namespace; linksto geen namespace-aliassen, hoofdlettergevoelig, geen doorverwijzingen; intitle geen doorverwijzingen.)
Hastemplate vindt secundair (of meta-sjabloon) gebruik op een pagina: het doorzoekt de post-expansie inclusie. Dit is dezelfde filosofie als voor woorden en zinnen uit een sjabloon, maar hier is het voor sjablonen uit een sjabloon. De pagina wordt vermeld als een pagina met die inhoud, ook al is die inhoud niet te zien in de wikitext.
- hastemplate: "quality image" vind het gebruik van 'Template:Quality image' in uw standaardzoekdomein (namespaces).
- hastemplate: portal:contents/tocnavbar, vindt het gebruik van de mainspace van een sjabloon "Contents/TOCnavbar" in de namespace Portal.
Voor installaties met de extensie Translate krijgen hastemplate zoekopdrachten interferentie waar Template:Translatable template name de sjabloonnaam van een vertaalbaar sjabloon omwikkelt. Gebruik in plaats daarvan insource.
Inlanguage
Voor installaties met de extensie Translate is inlanguage belangrijk voor zeer verfijnde zoekopdrachten en het tellen van pagina's.
- inlanguage: taalcode
zal alleen in die taal zoekresultaten opleveren.
Bijvoorbeeld
- om alle Japanse pagina's op de wiki te tellen
- all: inlanguage: ja
- om de Duitse en Spaanse pagina's in de namespace Help eruit te filteren
- help: -inlanguage: de -inlanguage: es
- om Translate te negeren, en waar Engels de basistaal is, toe te voegen
- inlanguage:en
Contentmodel
Het keyword contentmodel: maakt het mogelijk om de zoekopdracht te beperken tot pagina's van een specifiek inhoudsmodel. Voor mogelijke modellen zie Content handlers. Bijvoorbeeld:
- Om alleen JSON-pagina's te zien:
contentmodel:json
subpageof
Om subpagina's te vinden.
- subpageof: ParentPage
Bijvoorbeeld
- Om alle subpagina's van CirrusSearch te vinden.
- subpageof:CirrusSearch
- Gebruik dubbele quotes als de bovenliggende pagina spaties bevat.
- subpageof:"Requests for comment"
Articletopic
Met het keyword articletopic: kunnen zoekresultaten op onderwerp worden gefilterd. Voor mogelijke onderwerpen zie Help:CirrusSearch/articletopic . Bijvoorbeeld articletopic:books zal de zoekresultaten filteren op artikelen over boeken. articletopic:books|films zal worden filteren op artikelen over boeken of films. articletopic:books articletopic:films zal filteren op artikelen over boeken en films.
Alleen mainspace artikelen behoren tot onderwerpen, onderwerpen zijn alleen beschikbaar op Wikipedia's. In tegenstelling tot andere filters, doet articletopic ook aan paginaweging: artikelen die beter overeenkomen met een onderwerp zullen hoger in de zoekresultaten staan (terwijl artikelen die helemaal niet over dat onderwerp gaan, volledig uit de resultaten worden verwijderd).
Onderwerp modellen worden afgeleid via machine learning van ORES. Een bepaald artikel krijgt een score op tientallen verschillende onderwerpen en kan daarom onder verschillende zoekwoorden verschijnen. Het artikel over Albert Einstein kan bijvoorbeeld verschijnen als een "fysica" artikel en een "biografie" artikel. Alle Wikipedia's hebben scores beschikbaar - sommige hebben lokale taal themamodellen die betrekking hebben op alle artikelen. Andere talen hebben geen lokale ORES-modellen en gebruiken de Engelse-taalscore die wordt toegekend aan artikelen in de lokale taal die ook in de Engelse Wikipedia bestaan. De talen met dergelijke "cross-wiki" scores hebben geen 100% dekking -- afhankelijk van de taal, kan het slechts ongeveer 60% van de artikelen zijn die beschikbaar zijn over onderwerpen.
Onderwerpgerelateerde zoekgegevens worden wekelijks bijgewerkt, dus recent gecreëerde artikelen kunnen niet worden weergegeven in onderwerpgebaseerde zoekopdrachten.
Pageid
Het keyword pageid: beperkt de zoekresultaten tot de gegeven set pagina-ID's. Dit is niet echt nuttig voor handmatig zoeken; het kan door software-hulpmiddelen worden gebruikt om te controleren of een reeks pagina's overeenkomt met de gegeven reeks zoekvoorwaarden (bijv. voor de hervalidatie van de in cache geplaatste zoekresultaten).
Pagina's wegen
Weging bepaalt fragmenten, suggesties en paginarelevantie. Het normale gewicht is één. Extra gewicht wordt gegeven door middel van vermenigvuldigingsfactoren.
Als de zoekopdracht alleen uit woorden bestaat, krijgen pagina's die er in volgorde mee overeenkomen een boost. Als u 'expliciete' zinnen toevoegt aan uw zoekopdracht, of voor bepaalde andere toevoegingen, wordt deze functie 'voorkeurszin' niet toegepast.
Morelike
- morelike:page name 1|page name 2|...|page name n
- Zoekt artikelen waarvan de tekst het meest lijkt op de tekst van de betreffende artikelen.
morelike:wasp|bee|ant
- Zoekt artikelen over stekende insecten.
morelike:template:search|template:regex|template:usage
- Zoekt templates over het gebruik van reguliere expressies voor het zoeken met sjablonen op de wiki.
morelike
is een "gready" keyword, wat betekent dat het niet kan worden gecombineerd met andere zoekopdrachten. Als u andere zoekopdrachten wilt gebruiken, gebruik dan morelikethis in uw zoekopdracht:
morelikethis:bee hastemplate:"featured article"
- Zoekt artikelen over bees die ook het sjabloon "featured article" hebben.
De morelike: query werkt door een reeks woorden in de invoerartikelen te kiezen en een query uit te voeren met de gekozen woorden. U kunt de manier waarop het werkt afstemmen door de volgende parameters toe te voegen aan de URL van de zoekresultaten:
- cirrusMltMinDocFreq: Minimaal aantal documenten (per stuk) die een voorwaarde nodig hebben om er rekening mee te houden.
- cirrusMltMaxDocFreq: Maximaal aantal documenten (per stuk) die een voorwaarde hebben om te worden overwogen.
- cirrusMltMaxQueryTerms: Maximaal aantal voorwaarden die moeten worden overwogen.
- cirrusMltMinTermFreq: Minimaal aantal keren dat de voorwaarde in de invoer naar doc verschijnt. Voor kleine velden (title) moet deze waarde 1 zijn.
- cirrusMltMinWordLength: Minimale lengte van een voorwaarde die moet worden overwogen. - Default 0.
- cirrusMltMaxWordLength: De maximale woordlengte waarboven de woorden worden genegeerd. Default tot onbeperkt (0).
- cirrusMltFields (lijst waarden gescheiden met komma's): Dit zijn de velden die moeten worden gebruikt. Toegestane velden zijn title, text, auxiliary_text, opening_text, headings en all.
- cirrusMltUseFields (
true
|false
): gebruik alleen de veldgegevens. De standaardfalse
wordt gebruikt om de inhoud van het veldtext
te extraheren om de query te maken. - cirrusMltPercentTermsToMatch: Het percentage van de voorwaarden waarop het overeenkomt. - Default tot 0,3 (30 procent).
- Voorbeeld:
&cirrusMtlUseFields=yes&cirrusMltFields=title&cirrusMltMinTermFreq=1&cirrusMltMinDocFreq=1&cirrusMltMinWordLength=2
Deze instellingen kunnen permanent worden gemaakt door cirrussearch-morelikethis-settings
te overschrijven in Systeembericht.
Prefer-recent
Door prefer-recent: ergens in de query toe te voegen, krijgen recent bewerkte artikelen een iets grotere boost dan normaal in de regels voor rangschikking.
Prefer-recent wordt alleen toegepast bij gebruik van de standaard relevance
sorteervolgorde.
Standaard wordt slechts 60% van de score geboost, in een groot tijdsbestek van 160 dagen, dat in de query kan worden ingevoerd als prefer-recent:0.6,160. Dit werkt goed samen met andere regels voor het rangschikken van pagina's en is bedoeld voor de meeste zoekopdrachten.
U kunt de regels manipuleren: prefer-recent:boost,recent Technisch gezien is "boost" het percentage score te schalen, en "recent" is de halveringstijd in dagen. De boost is meer dan de gebruikelijke multiplier, het is een exponentiele boost. De factor die in de exponent wordt gebruikt is de tijd sinds de laatste bewerking.
Bijvoorbeeld
- prefer-recent:,7
Pagina's ouder dan 7 dagen worden halverwege geboost, en pagina's ouder dan 14 dagen worden half zo veel geboost en zo verder. Voor een eenvoudige "sorteren op datum" in zeer verfijnde zoekresultaten, waar pagina rangschikking en boosting grotendeels zinloos zijn, moet u gewoon de hele score verhogen.
- prefer-recent:1,7 - weken
- prefer-recent:1,1 - dagen
- prefer-recent:1,0.0007 - minuten
- prefer-recent:1,0.0001 - 8,64 seconden
- prefer-recent:1,0.00001 - seconden
Boost-sjablonen
U kunt de scores van pagina's verhogen op basis van de sjablonen die ze bevatten. Dit kan worden toegepast op alle zoekopdrachten door boosts aan te geven via MediaWiki:Cirrussearch-boost-templates, of ad-hoc in individuele zoekopdrachten via de boost-templates:""
-operator. Als de operator boost-templates
is ingesteld in een query, wordt de inhoud van cirrussearch-boost-templates
genegeerd.
Net als bij de functie prefer-recent, wordt boost-templates toegepast als onderdeel van de standaard relevance
sorteervolgorde. Het heeft geen effect op andere zoekopdrachten.
De syntaxis van het bericht is als volgt:
- Alles, vanaf een teken
#
tot het einde van de regel, wordt als een opmerking beschouwd en genegeerd. - Elke niet-lege regel wordt geïnterpreteerd als de exacte naam van een sjabloon dat een boost moet krijgen (inclusief het voorvoegsel van de namespace), gevolgd door een verticale streep "|", gevolgd door een nummer, gevolgd door een teken "%".
Goede voorbeelden:
Template:Important|150% Template:Very_Very_Important|300% Template:Less_important|50%
Slechte voorbeelden:
Template:Foo|150.234234% # decimale punten zijn niet toegestaan. Foo|150% # technisch geldig, maar werkt op transclusies van Foo (mainspace-artikel) in plaats van Template:Foo.
Enkele voorbeelden:
- boost-templates:"Template:Quality_Image|200%" incategory:china
- Zoekt bestanden in de categorie China, eerst sorteren op kwaliteitsbeelden.
- boost-templates:"Template:Quality_Image|200% Template:Low_Quality|50%" incategory:china
- Zoekt bestanden in de categorie China, sorteren eerst kwaliteitsbeelden en achteraan afbeeldingen met een lagere kwaliteit.
- boost-templates:"Template:Quality_Image|200% Template:Low_Quality|50%" popcorn
- Zoekt bestanden over popcorn, sorteer eerst kwaliteitsafbeeldingen en afbeeldingen van lage kwaliteit als laatste. Onthoud dat door het gebruik van het bericht
cirrussearch-boost-templates
dit kan worden teruggebracht tot slechtspopcorn
.
Decimale punten zijn niet toegestaan in percentages. Zo is het zo dat fracties van een procent waarschijnlijk geen verschil maken.
Let op dat als u zeer lage of zeer hoge percentages via cirrussearch-boost-templates toevoegt, ze de scoring van de volledige tekst kunnen beïnvloeden. Als Wikipedia bijvoorbeeld het sjabloon "Uitgelicht artikel" met 1 miljoen procent zou willen verhogen, dan zouden zoekopdrachten naar een term die in uitgelichte artikelen wordt genoemd, het uitgelichte artikel zelfs boven het speciale artikel over die term plaatsen.
Zindeel overeenkomst zoeken zou op dezelfde manier worden weggeblazen, dus een zoekopdracht als brave new world
zou een uitgelicht artikel als eerste resultaat opleveren, zelfs als het alleen die drie woorden bevat, in plaats van het meer relevante artikel over Brave New World zelf.
Reguliere expressie zoeken
Een eenvoudige geïndexeerde zoekopdracht vindt woorden zichtbaar gemaakt op een pagina. Woordafbreking en leestekens en haakjes, schuine strepen en andere wiskundige en computersymbolen, zijn slechts grenzen voor de woorden. Het is niet mogelijk om ze op te nemen in een geïndexeerde zoekopdracht. Meestal is dat zoekgedrag door de gebruiker gewild. Soms wil men echter de mogelijkheid hebben om nauwkeuriger te zoeken.
Om de syntactische tekortkoming van indexgebaseerde zoekopdrachten te omzeilen, kunnen regexp zoekopdrachten worden gebruikt. Maar omdat queries met alleen regexp-uitdrukkingen zeer langzaam zijn en veel hulpbronnen gebruiken, moeten ze altijd worden gecombineerd met een indexgebaseerde zoekopdracht, zodat het regexp-zoekdomein beperkt wordt tot de resultaten van een of meer indexgebaseerd zoekopdrachten.
Een "exacte tekenreeks" regexp-zoekopdracht is een eenvoudige zoekopdracht; Het zal gewoon de hele regexp "citeren", of "backslash-escape" alle niet-alfanumerieke tekens in de tekenreeks. Alle regexp-zoekopdrachten vereisen ook dat de gebruiker een eenvoudig filter ontwikkelt om het zoekdomein te genereren voor de regex-engine om te zoeken (indexgebaseerd zoekdomein vetgedrukt, regexp-gedeelte cursief gemarkeerd):
- insource:"debian.reproducible.net" insource:/debian\.reproducible\.net/
- insource:"c:\program files (x86)" insource:/C\:\\Program Files \(x86\)/i
- insource:"<tag>{{template}}</tag>" insource:/"<tag>{{template}}<"\/"tag>"/
- insource:"[[title|link label]]'s" insource:/"[[title|link label]]'s"/
- insource:/regexp/ prefix:{{FULLPAGENAME}}
Het laatste voorbeeld werkt vanuit een link op een pagina, maar {{FULLPAGENAME}} werkt niet in het zoekvak.
Bijvoorbeeld: [[Special:Search/insource:/regex/ prefix:{{FULLPAGENAME}}]] vindt de term regex op deze pagina.
Een query zonder opgegeven namespace en zonder opgegeven voorvoegsel doorzoekt uw standaard zoekdomein (instelbaar op elke pagina met zoekresultaten, d.w.z. op Special:Search). Sommige gebruikers behouden hun standaard zoekdomein op "alle namespaces", d.w.z. de hele wiki. Als deze gebruiker op een grote wiki een kale regexp-zoekopdracht uitvoert, zal deze waarschijnlijk mislukken, met een time-out, voordat de zoekopdracht is voltooid.
Een regex zoekopdracht doorzoekt eigenlijk elke pagina in het zoekgebied letter voor letter. Een geïndexeerde zoekopdracht vraagt daarentegen eigenlijk maar een paar records uit een database die apart wordt onderhouden van de wiki-database, en geeft bijna onmiddellijk resultaten. Dus als u een $source (een regexp van welke aard dan ook) gebruikt, overweeg dan om andere zoekwoorden toe te voegen die het regex zoekdomein zoveel mogelijk beperken. Er zijn veel zoektermen die een index gebruiken en zo onmiddellijk een meer verfijnde zoekdomein voor de /regexp/ bieden. In volgorde van algemene effectiviteit:
- insource:"" met aanhalingstekens, het dupliceren van de regexp behalve zonder de schuine strepen of escape-tekens, is ideaal.
- intitle (zonder regex-zoekopdracht), incategory en linksto zijn uitstekende filters.
- hastemplate: is een erg goed filter.
- "word1 word2 word3", met of zonder aanhalingstekens, zijn goed.
- namespace: is praktisch nutteloos, maar kan het mogelijk maken om een langzame regexp-zoekopdracht te voltooien.
Om een kale regexp-query te testen, kunt u een pagina maken met testpatronen en vervolgens de parameter prefix gebruiken met die volledige paginanaam. De overeenkomst zal worden benadrukt. Het zoekt naar die pagina (in de database) en de bijbehorende subpagina's.
Zoektermen die de efficiëntie van een regexp-zoekopdracht niet verhogen, zijn de paginascore-operators: morelike, boost-template en prefer-recent.
Metakarakters
Dit gedeelte behandelt hoe metakarakters gebruikt kunnen worden in regexp zoekopdrachten (escapen). Voor de betekenis van de metakarakters zie de uitleg van de syntaxis.[9]
Bijvoorbeeld:
- om een namespace te zoeken, meet het aantal pagina's met een enkele term die een namespace is. Hier wordt het aantal pagina's in die namespace getoond.
- begin om te zoeken wat u misschien heeft gezien, zoals "wiki-link" of " (trans[in]clusion) " beginnen met namespace en insource filters.
Er zijn enkele opmerkelijke verschillen van standaard regex metakarakters:
- De
\n
of\r\n
zijn niet gereserveerd voor het matchen met een nieuweregel-teken. Om te zoeken naar een string die een nieuwe regel bevat, kunt u een zoekopdracht doen zoalsinsource:/[^\}]\}\}[^\} \|]{2}\<noinclude/i
wat betekent dat niet een accolade, dan twee accolades, dan twee tekens behalve een accolade, spatie of verticaal streepje, dan een tag<noinclude>
. Het "alle karakters behalve" zal ook een nieuweregel-teken in de zoekopdracht bevatten. Let op dat deze zoekopdracht alleen is ontworpen om te voldoen aan de volgende tekenreeks:
}} <noinclude>
- Het meta-tekst met de punt
.
staat voor elk tekst een nieuwe regel, dus.*
komt overeen over regels. - Het nummer
#
betekent een willekeurig teken en moet met een escape gebruikt worden.[10] - De
^
en$
zijn niet geïmplementeerd. Net als "grep" (globaal per regel, reguliere expressie, elke regel afdrukken), is elke insource:// een "globaal per document, reguliere expressie, zoekresultatenlijst elk document" per document. <
en>
ondersteunen een meercijferig numeriek bereik zoals[0-9]
doet, maar zonder rekening te houden met het aantal karakterposities, of het bereik in elke positie, dus<9-10>
werkt, zelfs<1-111>
werkt.
Vervangingen voor sommige metakarakters
Hoewel karakter classes \n
, \s
, \S
niet worden ondersteund, kunt u deze oplossingen gebruiken voor het geval dat u ze in een reguliere expressie moet gebruiken:
PCRE | CirrusSearch | Beschrijving |
---|---|---|
\n |
[^ -] |
Een nieuwe regel (ook een tabstop kan worden gevonden)[11] |
[^\n] |
[ -] |
Elk teken behalve een nieuweregel-teken en een tab-teken |
\s |
[^!-] |
Een whitespace karakter: een spatie, nieuweregel-teken of tab-teken |
\S |
[!-] |
Elk karakter behalve een whitespace |
In deze bereiken is " " (spatie) het teken dat direct volgt op de controletekens, "!" is het teken dat direct volgt op de spatie, en "" is U+10FFFF, het laatste teken in Unicode. Het bereik van " " - "" omvat dus alle tekens behalve controletekens (waarvan artikelen nieuweregels-tekens en tab-tekens kunnen bevatten), terwijl het bereik van "!" -"" alle tekens omvat, behalve controletekens en spaties.
Verfijning met een exacte string
- het verfijnen van een doorlopend zoekproces met wat u wilt zien, zoals "2 + 2 = 4", of "site.org" Dit is idealiter het beste gebruik van regex, omdat het het toevoegt als een enkele regexp-term terwijl het verfijnen van een zoekopdracht het beperkte aantal pagina's dat de regexp moet crawlen kan worden gezien.
U kunt beginnen met het opzoeken van een exacte tekst, maar houd in gedachten:
- regex zoekt alleen de wikitext en niet de weergegeven tekst, dus er zijn enkele verschillen rond de opmaak, en zelfs het aantal spaties moet precies overeenkomen.
- U bent verplicht een filter te leveren.
- U moet leren hoe om te gaan met regex meta-karakters (escape).
Er zijn twee manieren om meta-karakters te gebruiken als echt het teken en niet als een speciaal teken. Beide zijn soms nuttig en soms naast elkaar te gebruiken in een tekst.
- Backslash-escape een van hen \char. De insource:/regexp/ gebruikt schuine strepen om de regexp af te bakenen. Het geven van /reg/exp/ is dubbelzinnig, dus u moet /reg\/exp/ schrijven.
- Zet er een reeks ervan tussen dubbele aanhalingstekens "string". Omdat escapen aan een teken geen kwaad kan, kunt u aan elk teken escapen, samen met alle mogelijke metakarakters daarin. Escapen aan aanhalingstekens is netter.
- U kunt methoden niet mengen, maar u kunt ze wel samenvoegen.
Dubbele aanhalingstekens escape met behulp van insource:/"regexp"/ is een gemakkelijke manier om naar vele soorten strings te zoeken, maar u kunt niets backslash-escapen binnen een escape van dubbele aanhalingstekens.
/"[[page/name|{{temp-late"/
in plaats van/\[\[page\/name\|\{\{temp\-late/
/"literal back\slash"/
is even goed als/literal back\\slash/
- Maar
/"This \" fails"/
altijd. - En
/"This \/ depends"/
. Het vindt de\/
letterlijk, wat waarschijnlijk niet de/
is die u wilt.
Backslash-escape met behulp van insource:/regexp/ maakt het mogelijk om te escapen aan de " en / scheidingstekens, maar vereist dat rekening wordt gehouden met metakarakters, en dat het escapen van alle:
- Om een
/
scheidingsteken te matchen, gebruik\/
. - Om een
"
scheidingsteken te matchen, gebruik\"
. - De geescapte metakarakters zouden
\~\@\#\&\*\(\)\-\+\{\}\[\]\|\<\>\?\.\\
zijn. - De gelijkwaardige expressie voor het escapen van dubbele aanhalingstekens is
"~@#&*()-+{}[]|\<>?.\"
.
Het eenvoudigste algoritme om de basisexpressie voor het vinden van tekenreeksen te maken met behulp van insource:/"regexp"/, hoeft geen rekening te houden met metatekens, behalve voor de " en / tekens:
- Schrijf
the/str"ing
uit. (De /" scheidingstekens "/ worden niet weergegeven.) - Vervang
"
door"\""
(vorige dubbele aanhalingstekens: stop, samenvoegen, aanhalingsteken herstarten). - Vervang
/
door"\/"
(stop, samenvoegen, start). - U krijgt
insource:/"the"\/"str"\""ing"/
, wat een samenvoeging van de twee methoden toont.
De notatie tussen vierkante haken voor het maken van uw eigen karakterklasse escaped ook aan zijn metakarakters. Als u zich wilt richten op een letterlijke vierkante haak rechts in uw tekenklassepatroon, moet deze backslash escaped zijn, anders kan deze worden geïnterpreteerd als het sluitscheidingsteken van de patroondefinitie van de klasse.
De eerste positie van de klasse zal ook escapen aan de juiste vierkante haak. Binnen de afbakening tussen vierkante haken van een teken klasse, heeft het streepje ook een speciale betekenis (bereik), maar het kan ook letterlijk in de klasse worden opgenomen op dezelfde manier als kan bij de rechter vierkante haak.
Bijvoorbeeld, beide patronen richten zich op een karakter dat een streepje of een rechtere vierkante haak of een punt is: [-.\]]
of [].\-]
.
Voor algemene voorbeelden met behulp van metakarakters:
- insource:"2+2=4" insource:/"2+2=4"/ komt overeen met "2 + 2 = 4", met nul spaties tussen de tekens.
- insource:"2 + 2 = 4" insource:/2 ?\+ ?2 ?= ?4\./ komt overeen met nul of één spatie ertussen. Het is gelijk = teken is geen meta-teken, maar het plus + teken is dat wel.
- insource:"<tag>[[link|2\3?]]\</tag>" insource:/"<tag>[[link|2\3?]]<"\/"tag>"/
Regex op titels
Het keywoord insource zoekt alleen in de broninhoud van de pagina. Om regex zoekopdrachten te doen op de titelteksten kan intitle:/regex/ worden gebruikt.
Geavanceerd voorbeeld
Bijvoorbeeld, het gebruiken van meta-tekens om het gebruik te vinden van een sjabloon met de naam Val met, binnen de sjabloonaanroep, een niet-benoemde parameter met een mogelijk ondertekend, drie- tot viercijferig nummer, mogelijk omgeven door spatietekens, en op dezelfde pagina, binnen een sjabloon Val-aanroep, een benoemd argument fmt=commas
met toegestane spaties eromheen, (het kan dezelfde sjabloonaanroep zijn, of een andere):
hastemplate:val insource:"fmt commas" insource:/\{\{ *[Vv]al *\|[^}]*fmt *= *commas/ insource:/\{\{ *[Vv]al *\|[^}]*[-+]?[0-9]{3,4} *[|}]/
Merk op dat het =-teken in "fmt comma's" niet nodig is, maar dat het toevoegen ervan de zoekresultaten niet zal veranderen. Het is snel omdat het twee filters gebruikt zodat de regexp op elke pagina die het doorzoekt het maximale potentieel heeft.
Geo Zoeken
Zoeken op basis van de (primaire) coördinaten die zijn verbonden met pagina's.
Afhankelijk van Extension:GeoData en {{#coordinates:}}
bounded (begrensd)
U kunt de zoekopdracht beperken tot pagina's die worden geïdentificeerd als dicht bij bepaalde geografische coördinaten. De coördinaten kunnen worden gespecificeerd als een <lat>,<lon> paar, of door een pagina-titel te geven waaruit de coördinaten kunnen worden afgeleid. Om de lengte van het zoeken te beperken, kan indien gewenst vooraf worden aangepast. Voorbeelden:
- neartitle:"San Francisco"
- neartitle:"100km,San Francisco"
- nearcoord:37.776,-122.39
- nearcoord:42km,37.776,-122.39
boosted (verhoogd)
U kunt ook de score van pagina's binnen een bepaald geografisch gebied verhogen. De syntaxis is hetzelfde als beperkte zoekopdracht, maar met boost- vooraf aan het keywoord. Dit verdubbelt de score voor pagina's binnen het zoekgebied, waardoor de nabijgelegen zoekresultaten beter in de buurt van de top kunnen komen.
- boost-neartitle:"San Francisco"
- boost-neartitle:"100km,San Francisco"
- boost-nearcoord:37.776,-122.39
- boost-nearcoord:42km,37.776,-122.39
Op bestandseigenschappen zoeken
≥ 1.28 Gerrit change 311061 |
Sinds MediaWiki 1.28 ondersteunt CirrusSearch het indexeren en doorzoeken van eigenschappen van bestanden in de namespace File:
. Dit omvat:
- bestandstype media
- MIME-type
- grootte
- breedte en hoogte
- resolutie
- bitdiepte voor bestanden die deze ondersteunen
File:
. Het wordt aanbevolen om deze op te nemen in een zoekopdracht of de zoekopdracht te beperken tot alleen deze namespace wanneer u deze voorwaarden gebruikt.
bestandstype
Zoeken naar bestandstype maakt het mogelijk om bestanden op te halen op basis van hun classificatie, zoals office-documenten, video's, rasterafbeeldingen, vectorafbeeldingen, enz. De typen zijn:
UNKNOWN
BITMAP
DRAWING
AUDIO
VIDEO
MULTIMEDIA
OFFICE
TEXT
EXECUTABLE
ARCHIVE
Deze lijst kan in de toekomst worden uitgebreid. Zie ook MEDIATYPE_*
constanten in Defines.php
.
De syntaxis van de zoekopdracht is: filetype:{type}. Voorbeeld:
filetype:video - zoekt naar alle video's
Het zoeken naar bestandstypen is niet hoofdlettergevoelig.
filemime
Komt overeen met het MIME-type van het bestand. De syntaxis is:
$filmime - zoeken naar bestanden van dit MIME-type
Het argument kan worden geciteerd om de exacte overeenkomst op te geven. Zonder aanhalingstekens worden gedeeltelijke overeenkomsten met componenten van het MIME-type ook geaccepteerd.
Voorbeelden:
- filemime:"image/png" - zoeken naar bestanden met exact MIME-type
image/png
- filemime:pdf - zoeken naar alle PDF-documenten
- -filemime:pdf - alle PDF-documenten overslaan (met name op Commons)
Het zoeken op MIME-type is niet hoofdlettergevoelig.
filesize
Zoeken naar een bestand van bepaalde grootte, in kilobytes (kilobyte betekent 1024 bytes). De syntaxis is:
- filesize:{number} of filesize:>{number} - bestand met een minimaal aangegeven grootte
- filesize:<{number} - bestand met een grootte die maximaal de aangegeven grootte is
- filesize:{number},{number} - bestand met een grootte tussen een aangegeven minimum en maximum
Voorbeelden:
- filesize:>20 of filesize:20 - bestanden van 20 KB en groter
- filesize:<1024 - bestanden kleiner dan 1 MB
- filesize:100,500 - bestanden met een grootte van 100 KB tot 500 KB
Bestandsafmetingen (File measures)
Het is mogelijk om te zoeken naar specifieke bestandsafmetingen: breedte, hoogte, resolutie (die wordt gedefinieerd als vierkantswortel van hoogte × breedte) en bitdiepte. Het is mogelijk dat niet alle bestanden deze eigenschappen hebben. De syntaxis is:
- {measure}:{number} - bestand met een maat die gelijk is aan een gegeven getal
- {measure}:>{number} - bestand met een minimaal aangegeven maat
- {measure}:<{number} - bestand met een maat die maximaal het aangegeven getal is
- {measure}:{number},{number} - bestand met een maat tussen een aangegeven minimum en een aangegeven maximum
Waar measure
kan zijn:
filew of filewidth - bestandsbreedte
fileh of fileheight - bestandshoogte
fileres - bestandsresolutie (zie hierboven)
filebits - bestandsdiepte bit
Voorbeelden:
filew:>800 fileh:>600 - bestanden die minstens 800×600 pixels groot zijn
filebits:16 - bestanden met een kleurdiepte van 16 bits
fileheight:100,500 - bestand met een hoogte van 100 tot 500 pixels
Wikibase zoeken
De extensie Wikibase definieert een aantal keywords om het makkelijker te maken om naar bepaalde Wikibase-items te zoeken. Dit is handig op Wikidata en andere Wikibase-sites, inclusief om te zoeken naar afbeeldingen met Gestructureerde gegevens op Wikimedia Commons . Zie Help:WikibaseCirrusSearch voor details.
Cross-wiki zoekresultaten
Er zijn twee soorten cross-wiki resultaten die kunnen worden getoond bij het zoeken op Wikipedia.
Zoeken tussen projecten (ook bekend als interwiki zoeken, zuster zoeken of zusterprojecten zoeken) toont extra resultaten van andere projecten (Wiktionary, Wikisource, Wikiquote, enz.) aan de zijkant van de Wikipedia resultatenpagina. Cross-project zoeken is beschikbaar op de meeste Wikipedia's met zusterprojecten.
Zoeken in meerdere talen (zie blogpost) verwijst naar extra resultaten die onder de belangrijkste resultaten worden weergegeven die afkomstig zijn uit een Wikipedia in een andere taal. Het zoeken in verschillende talen maakt gebruik van een sterk aangepaste en geoptimaliseerde versie van een lichtgewicht taaldetector, TextCat . Cross-language zoeken is nu alleen beschikbaar op een paar Wikipedia's (zie de link TextCat voor details).
Expliciete sorteervolgorde
Naast de standaardsortering op basis van relevantie, kan CirrusSearch resultaten leveren met behulp van een paar andere expliciete sorteervolgordes.
Als u een andere sorteervolgorde dan relevance
opgeeft, worden alle keywords uitgeschakeld die van invloed zijn op de volgorde, zoals prefer-recent
en boost-templates
.
De keywords zullen nog steeds worden geanalyseerd, maar ze zullen geen effect hebben.
Opties voor het sorteren zijn nu beschikbaar in de MediaWiki API door de parameter srsort
te gebruiken.
Begeleiding:
Sorteeropties kunnen handmatig worden toegevoegd aan een zoek-URL door &sort=order
toe te voegen, bijvoorbeeld:
Geldige sorteerorders zijn:
Aanvulling op URL | Beschrijving |
---|---|
&sort=incoming_links_asc
|
Van laagste tot het hoogste aantal inkomende links. Dit betekent van het minst tot het meest populair. |
&sort=incoming_links_desc
|
Van het hoogste tot het laagste aantal inkomende links. Dit betekent van het meest tot het minst populair. |
&sort=last_edit_asc
|
Van het minst recente tot het meest recente bewerkte gegeven |
&sort=last_edit_desc
|
Van het meest tot het minst recente bewerkte gegeven |
&sort=create_timestamp_asc
|
Van het minst recente tot het meest recente aangemaakt |
&sort=create_timestamp_desc
|
Van het meest recente tot het minste recente aangemaakt |
&sort=just_match
|
Een eenvoudige relevantiesortering die alleen gebaseerd is op tekstovereenkomsten |
&sort=relevance
|
Een relevantiesortering die rekening houdt met veel kenmerken van het document |
&sort=random
|
De volgorde is willekeurig |
&sort=none
|
Ongesorteerde, willekeurig geordende lijsten. Dit heeft de voorkeur als er veel resultaten zijn. |
Interface voor geavanceerde opties
De extensie AdvancedSearch voegt een verbeterde interface toe aan de zoekpagina, waardoor het gebruik van verschillende hierboven beschreven opties op een gebruiksvriendelijke manier mogelijk is. Gebruikershandleiding.
Zie ook
- Extension:CirrusSearch
- Completion Suggester - de incrementele zoekfunctie van CirrusSearch
- Wikimedia Search Platform/Search/Glossary — definities, context en links voor termen die verband houden met zoekopdrachten.
- Zie Help:Zoeken voor MWSearch, gebruikt door de vele wiki's die geen extensie voor zoeken hebben.
Externe links
- van Lucene, zeer relevante documentatie.
- Volledige specificaties in de tests van de extensie Als van 2017
- Extension:CirrusSearch/Profiles – sets van instelbare parameters die verschillende aspecten van de indexering beïnvloeden
- Wikimedia blog articles related to search
- WMF Global Search
Aantekeningen en referenties
- ↑ Merk op dat de tagline (site subtitel) geen deel uitmaakt van de eigenlijke inhoud. Om de doorzoekbare inhoud voor een pagina te zien, voeg ?action=cirrusdump toe aan de URL.
- ↑ Stopwoorden worden zelden in CirrusSearch gebruikt, behalve wanneer ze in bepaalde soorten woordgroepen staan, zoals hieronder wordt uitgelegd.
- ↑ CirrusSearch-parameters gebruiken geen consistente manier om deze zoekwoorden te behandelen.
- ↑ Dezelfde analyzer die wordt gebruikt om de wikitext te indexeren, wordt ook gebruikt om de query te interpreteren.
- ↑ Bijvoorbeeld, veel voorkomende termen op deze wiki, MediaWiki.org, zijn, redundant, (gezocht):
- udp2log of udp2log2 (hoewel de extra 2 van invloed zijn op de rangschikking)
- html2wt of wt2html
- log2ip of ip2log
- ↑ CirrusSearch regex (reguliere expressie) adresseert het teken voor de nieuwe regel niet rechtstreeks, maar een punt . overeenkomt met een nieuwe regel.
- ↑ Een trage regex zoekopdracht kan de zoekopdracht niet uitschakelen, maar kan de regex zoekopslag van een ander uitschakelen omdat er slechts een beperkt aantal regex zoekopdrachten per keer toegestaan zijn.
- ↑ Het voorvoegsel komt niet overeen met de eerste tekens van fullpagenames, dus u kunt niet in twee namespaces tegelijk zoeken alleen omdat ze met dezelfde letters beginnen, zoals zowel namespace als namespace talk in één query.
- ↑ Voor de formele definitie zie de Lucene grammatica voor reguliere expressies.
- ↑ Class RegExp, Lucene RegExp syntaxis
- ↑ Om ook het tab-teken uit te sluiten, kopieer het en voeg het toe aan de karakterset.