Aide:CirrusSearch
![]() |
Note : si vous modifiez cette page, vous acceptez de placer votre contribution sous licence CC0. Plus d’informations sont disponibles sur le projet Aide dans le domaine public. | ![]() |
La méthode la plus rapide pour trouver une information dans les projets Wikimedia est de la rechercher directement. La rechercher existe sur toutes les pages.
CirrusSearch est une extension pour MediaWiki qui utilise Elasticsearch pour ajouter des fonctionnalités de recherche avancée à l’outil de recherche de MediaWiki par défaut. La Fondation Wikimédia utilise CirrusSearch pour tous les projets Wikimédia. Cette page décrit les fonctionnalités de CirrusSearch. Si votre question ne trouve pas de réponse ici, n’hésitez pas à la poser sur la page de discussion et on vous répondra.
Pour obtenir des informations sur l’extension MediaWiki, consultez Extension:CirrusSearch/fr .
Pour son utilisation dans Wikidata, voir Aide:Extension:WikibaseCirrusSearch .
Comment ça marche ?
Entrez les mots-clés et les phrases, puis appuyez sur la touche Entrée ou Retour de votre clavier, ou cliquez sur l'icône de la loupe, ou les boutons Chercher, Exécuter ou similaires.
Si une page a pour titre ce que vous avez saisi, vous serez dirigé vers cette page. Sinon, toutes les pages du wiki sont cherchées et il apparait une liste de pages qui correspondent à vos termes de recherche, ou un message précisant qu'aucune page ne contient tous les mots clés et expressions recherchés.
Si vous cliquez sur le bouton « Rechercher » sans rien renseigner, vous serez redirigé vers Special:Search qui vous apportera des options de recherche supplémentaires (disponibles également depuis toute liste de résultats de recherche)
Il est possible que vous trouviez utile de restreindre la recherche aux pages d'un certain espace de noms, par exemple seulement les pages de User. Vérifiez les espaces de noms que vous voulez spécifier pour cette recherche.
Quelles sont les améliorations ?
CirrusSearch apporte trois améliorations principales à l’outil de recherche par défaut de MediaWiki, à savoir :
- Une meilleure prise en charge de la recherche dans les différentes langues.
- Des mises à jour plus rapides pour l’indexation, ce qui veut dire que les changements dans les pages sont visibles plus rapidement dans les résultats de recherche.
- Le développement des modèles, ce qui signifie que le rendu des modèles est pris en compte par la recherche.
À quelle fréquence l’index de recherche est-il mis à jour ?
Il y a deux index de recherche principaux à prendre en compte :
Le premier est la recherche en texte intégral avec Special:Search. Cet index est mis à jour quasiment en temps réel. Les modifications des pages devraient être immédiatement visibles dans les résultats de recherche, mais toute attente jusqu'à 30 minutes est considérée comme normale. Les modifications apportées aux modèles devraient être visibles dans les articles qui les incluent au bout de quelques minutes, qui peuvent devenir des heures selon le nombre de pages qui utilisent ce modèle. Une modification nulle de l’article forcera la mise à jour, mais cette opération ne devrait pas être nécessaire si tout fonctionne correctement.
Le deuxième index à prendre en compte est la recherche floue de titres par auto-complétion. Cet index est mis à jour une fois par jour et reflète ce qui a été trouvé dans l’index de recherche en texte intégral au moment de la mise à jour de l’index. Selon le moment, une nouvelle page peut prendre jusqu'à deux jours pour figurer dans l’autocomplétion floue du titre. Si cela n’est pas acceptable dans un cas d’utilisation particulier, la complétion du titre peut être changée dans les options de recherche de l’utilisateur en recherche de préfixe classique qui utilise l’index de recherche en texte intégral.
Suggestions de recherche
Les suggestions de recherche qui s’affichent en dessous de la zone où vous saisissez votre recherche sont triées grossièrement en fonction de la qualité des articles. Cela prend en compte le nombre de liens wiki entrants, la taille de la page, le nombre de liens externes, le nombre de sections et le nombre de redirections.
Les suggestions de recherche peuvent être sautées et les requêtes iront directement à la page des résultats de recherche.
Ajouter un tilde ~
avant la requête.
Par ex. « ~Frida Kahlo ».
Les suggestions de recherche apparaîtront encore, mais en appuyant sur la touche Entrée à tout instant vous irez à la page des résultats.
Les accents et le repli diacritique sont activés pour certaines langues; les détails sont fonction de la langue.
The algorithm used to rank suggestions is described in more detail at Extension:CirrusSearch/CompletionSuggester#Ranking criteria.
Recherche de texte complet
Une « recherche de texte complet » est une « recherche indexée ». Toutes les pages sont stockées dans la base de données du wiki, et tous les mots des pages non redirigées sont stockés dans la base de données de recherche, formant un index vers pratiquement le texte complet du wiki. Tout mot visible est indexé à la liste des pages où il est trouvé, de sorte que la recherche d’un mot soit aussi rapide que la consultation d’un seul enregistrement.[1] De plus, pour tout changement dans la formulation, l’index de recherche est mis à jour en quelques secondes.
Il existe de nombreux index du « texte complet » du wiki afin d’optimiser les nombreux types de recherches pris en charge. Le wikitexte complet est indexé de nombreuses fois dans de nombreux index à objectif spécifique, chacun d’entre eux parcourant le wikitexte de la manière qui lui est la plus profitable. Exemples d’index :
- Texte « auxiliaire », incluant les en-têtes (redirections par exemple), les légendes des objets, le sommaire, et tout wikitexte classé avec un attribut HTML class=searchaux.
- Texte « d'introduction », wikitexte se situant entre le haut de la page et le premier titre de section.
- Le texte « catégorie » indexe les listes présentées en pied de page.
- Les modèles sont indexés. Si les mots transclus d’un modèle changent, toutes les pages qui le transcluent sont alors mises à jour (cela peut prendre du temps selon la file de traitement). Si les sous-modèles utilisés par un modèle changent, l’index est également mis à jour.
- Le contenu des documents stockés dans l’espace de noms File/Media sont dorénavant indexés. Des milliers de formats sont reconnus.
Des dizaines de langues sont supportées mais il est projeté de prendre en charge toutes les langues à terme. Il y a une liste des langues actuellement supportées sur elasticsearch.org ; voir leur documentation pour savoir comment contribuer en soumettant des requêtes et des patchs. Les librairies tierces à source ouvert sont aussi utilisées pour prendre en charge les langues supplémentaires non couvertes par Elasticsearch.
CirrusSearch optimisera votre requête et l’exécutera. Les titres résultants sont pondérés selon leur pertinence, et fortement post-traités, par 20 à la fois, pour la page des résultats de recherche. Ainsi des extraits sont fournis, et les termes de recherche sont mis en gras.
Les résultats de recherche seront souvent accompagnés par diverses indications préliminaires, telles que « Vouliez-vous dire » (correction orthographique), et, lorsqu’il n’y a aucun résultat pour les termes recherchés, « Résultats affichés pour » (corriger la requête) et « A la place, afficher les résultats pour » (votre requête).
Les fonctionnalités de recherche incluent également :
- Trier les suggestions de navigation en fonction du nombre de liens entrants.
- Commencer par le caractère
~
pour désactiver la navigation et les suggestions de manière à préserver également le classement (ranking) des pages. - Correspondance intelligente des caractères en normalisant (ou « pliant ») les caractères qui ne sont pas sur le clavier, en caractères basiques du clavier.
- Les mots et expressions qui correspondent sont mis en valeur en gras sur la page des résultats de recherche. La mise en valeur est issue de l'analyseur cosmétique, en supplément de l’analyseur d’indexation dont le rôle est de trouver les pages et la mise en valeur de la recherche peut ne pas être toujours 100 % synchronisée (dans l’extrait) avec ce que la recherche va retourner. Et ceci est particulièrement vrai quand on utilise des expressions régulières. La mise en valeur peut correspondre plus ou moins aux résultats de l'indexeur.
Mots, expressions et modificateurs
Le terme de recherche élémentaire est un mot ou une "expression entre guillemets". Les détails dépendent de la langue, particulièrement pour les langues sans espaces, mais search reconnait typiquement un mot comme étant :
- une suite de chiffres,
- une suite de lettres,
- des morceaux de mots séparés par des lettres ou chiffres, comme dans txt2regex,
- des morceaux de mots à l’intérieur d’un nomComposé utilisant la forme camelCase.
Un « mot d’arrêt » est un mot ignoré (parce qu’il est trop commun ou pour d’autres raisons). La liste des mots d'arrêt dépend de la langue et toutes les langues n'utilisent pas les mots d'arrêt.[2] Un terme de recherche donné est recherché dans le contenu (rendu affiché de la page). Si vous voulez rechercher plutôt dans le wikicode, il faut utiliser le paramètre de recherche insource (voir la section plus bas). Chaque paramètre de le recherche possède son propre index et interprète le terme recherché de sa propre manière.[3]
Les séparations entre les mots, les phrases, les paramètres et les valeurs de paramètres peuvent inclure de nombreux types d’espaces et de « caractères gris ». Les « caractères gris » sont tous les caractères non-alphanumériques ~!@#$%^&()_+-={}|[]\:";'<>?,./. Un mélange entre caractères gris et espaces donne des « espaces gris », qui sont traités comme des grosses séparation entre les mots. L’espace gris correspond à la manière dont les index sont réalisés et les recherches sont interprétées.[4]
On note deux exceptions :
- embedded:colon est un mot (il est traité comme une lettre) ;
- une virgule intégrée , comme dans 1,2,3, est traitée comme un nombre.
Pour le reste, les caractères gris sont ignorés, à moins qu’en raison de la syntaxe de la requête, ils soient interprétés comme des modificateurs.
Les modificateurs sont ~ * \? - " ! . Selon leur position dans la syntaxe, ils peuvent s’appliquer à un terme, à un paramètre ou à une requête entière. Les modificateurs de mots et d’expressions sont le métacaractère, la proximité et la recherche floue. Chaque paramètre peut avoir son propre modificateur, mais en général :
- Une recherche de mot flou ou d’expression floue intègre un caractère tilde
~
en suffixe (et un nombre indiquant le degré). - Un tilde
~
préfixe le premier terme d’une requête pour forcer la recherche en empêchant toute redirection potentielle. - Un métacaractère à l’intérieur d’un mot est représenté par un point d’interrogation (échappé) \? pour un seul caractère, ou bien une astérisque * pour zero ou plusieurs caractères.
- La logique de vérité peut interpréter les opérateurs AND et OR mais les paramètres ne le peuvent pas. Remarquez que les opérateurs AND et OR actuellement ne fonctionnent pas à la manière de la logique de vérité habituelle ! Pour les détails, voyez les opérateurs logiques.
- La logique de vérité reconnait - ou ! lorsqu'ils préfixent un terme pour passer de l'habituel « contient le terme » à « exclure le terme ».
- Les guillemets autour de plusieurs mots expriment la recherche d’une expression exacte. Dans les paramètres, ils sont aussi utilisés pour délimiter les groupes de plusieurs mots.
- La recherche par radical est automatique mais peut être outrepassée en utilisant une expression exacte.
Une phrase à rechercher peut être entrée de diverses manières pour le moteur de recherche. Chaque méthode d’écriture a des effets de bord sur le niveau de tolérance de la correspondance entre la séquences de mots et les résultats. Pour les recherches de greyspace, camelCase ou txt2number :
- si « words-joined_by_greyspace(characters) » ou « wordsJoinedByCamelCaseCharacters » sont entrés, words joined by, [...], characters seront recherchés séparément ou assemblés sous forme grisée.
- « txt2number » retournera des résultats pour
txt 2 number
et pourtxt-2.number
. - Les mots d’arrêt sont activés pour les mots aux extrémités (périphériques) d’une expression en greyspace ou en camelCase. Par exemple, l'utilisation de « the », « of » et « a » fait que « the_invisible_hand_of_a » correspond à
invisible hand
dans le textemeetings invisible hand shake
.
Un message « Rechercher ... à la place » est affiché lorsqu'un mot totalement inconnu est ignoré dans la phrase.
Chacun de ces types de recherche de correspondance comprend et élargit les tolérances de recherche de celle qui précède :
- Une "expression exacte" "entre guillemets" accepte les espaces gris. Les deux expressions "exact_phrase" ou "exact phrase" font bien apparaître
"exact]phrase"
parmi les résultats. - Une expression_avec_espace_gris déclenche la recherche par radical et les vérifications de la présence de mot d'arrêt.
- Si l'on tape CamelCase, cela affichera bien
camelcase
, en minuscules, parce que CirrusSearch n'est pas sensible à la casse. Notez que la correspondance de CamelCase n'est pas activée pour toutes les langues.
Certains paramètres acceptent les expressions avec espaces gris, mais d'autres paramètres, comme insource
n'acceptent que les "expressions entre guillemets".
Requête de recherche | parserfunction | parserFunction | parser function | parser-function | parser:function | parSer:funcTion |
---|---|---|---|---|---|---|
parserfunction | ||||||
"parser function" | ||||||
parser_function | ||||||
parserFunction | ||||||
"parser:function" | ||||||
"parser_function" | ||||||
"parSer_funcTion" | ||||||
parSer_FuncTion |
Notez que toute recherche par radical ne tient pas compte de la casse.
Remarquez comment la recherche par expression exacte interprète le deux:points comme une lettre, mais pas le tiret_underscore. Un effet similaire est observable avec la virgule , dans un nombre.
Si vous passez in:this:word
, alors CirrusSearch quand il se trouve dans un contexte de phrase exacte, (qui inclut le contexte du paramètre insource), ne détectera pas in
, ni this
, ni word
, mais ne détectera que in:this:word
.
Sinon, rappelez vous que pour CirrusSearch les mots sont des lettres, des nombres ou une combinaison des deux, et que la casse n'a pas d'importance.
La recherche de mot communs emploie le caractère espace et est agressive avec la recherche par radical, et quand les mêmes mots sont joints par des caractères d'espace gris ou camelCase ils sont agressifs avec des phrases et des sous-mots.
Lorsque des mots communs comme "de" (of) ou "le" (the) sont inclus dans une phrase d'espace gris, ils sont ignorés, de manière à filtrer de manière plus agressive.
Un terme de recherche greyspace_phrase, ou un terme camelCase, ou un terme txt2number, correspond aux mots signifiés de manière interchangeable. Vous pouvez utiliser n'importe laquelle de ces trois formes.[5] Maintenant camelcase correspond à camelCase parce que la recherche n'est pas sensible à la casse, mais camelCase correspond à camelcase parce que camelCase est plus agressif. Comme le reste de la recherche, les sous-mots qui sont des "mots" ne sont pas sensibles à la casse. Par comparaison, la "phrase exacte" est orientée espace gris et ignore les transitions numériques ou les transitions de casse, ainsi que la recherche par radical. Les phrases citées ne sont pas sensibles à la casse.
A partir de la table, nous pouvons supposer que la recherche de base parser_function -"parser function" est la somme des recherches de base parserFunction
et de parser<stems> function<stems>
.
En faisant des recherches avec des nombres, nous pourrons donc trouver ceci :
- Plan9 ou Plan_9 correspond à :
plan9
,plan9
,planned 9th
,(planned) 9.2
,"plans" (9:24)
- "plan9" ne correspond qu'à
plan9
(insensible à la casse) - Plan*9 correspond à
plan9
ou àplanet4589
.
Le caractère étoile de remplacement * correspond à une chaîne de lettres et de chiffres dans un mot rendu, mais jamais le caractère de début. Un ou plusieurs caractères, doivent précéder le caractère *.
- Si * sont des nombres, la virgule est considérée comme faisant partie d'un nombre mais le point décimal est considéré comme un caractère gris d'espacement et délimite deux nombres.
- Dans une phrase exacte * est traité comme un caractère gris d'espacement et non comme un caractère générique, il délimite donc deux mots.
Le caractère de remplacement \? représente une seule lettre ou un seul chiffre ; le *\? est également accepté, mais \?* n'est pas reconnu.
Les caractères génériques sont pour les mots de base, les phrases et les recherches dans les sources, et peuvent aussi être une alternative aux (certaines) recherches avancées d'expressions régulières (discuté ultérieurement).
Mettre un caractère tilde ~ après un mot ou une phrase active une recherche floue.
- Pour une phrase, il s'agit d'une recherche d'approximation, car les mots approximatifs sont tolérés dans une phrase approximative plutôt que la phrase exacte.
- Par exemple, "exact one two phrase"~2 correspond à
exact phrase
. - Pour un mot, cela signifie des caractères supplémentaires ou des caractères modifiés.
- Pour une phrase, une recherche floue nécessite un nombre entier lui indiquant le nombre de mots supplémentaires à insérer, mais pour un mot, une recherche floue peut avoir une fraction décimale, par défaut à word~0.5 (word~.5), où au plus deux lettres peuvent être échangées, modifiées ou ajoutées, mais jamais les deux premières lettres.
- Pour une phrase proche : un grand nombre peut être utilisé, mais c'est une recherche « coûteuse » (lente).
- Pour un mot : word~2 est le plus flou avec une distance d'édition de 2 (par défaut), word~1 est le moins flou, et word~0 n'est pas flou du tout.
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 |
Pour trouver la valeur de proximité nécessaire pour faire correspondre dans l'ordre inverse (de droite à gauche); compter et éliminer tous les mots supplémentaires; puis additionner deux fois le nombre total de mots restants moins un. (En d'autres termes, ajoutez deux fois le nombre de segments). Pour l'algorithme de proximité complète, voir Elasticsearch slop.
Les guillemets désactivent la recherche par radical, "but appending"~ le tilde réactive la recherche par radical.
flowers | flower | Flowers for Algernon | flower for Algernon | ||
flowers | La recherche par radical est active. | ||||
"flowers" | La recherche de proximité désactive la recherche par radical. | ||||
"flowers"~ | Proximité plus recherche par radical en suffixant avec un tilde. | ||||
"flowers for algernon" | La recherche de proximité désactive la recherche par radical. | ||||
"flowers for algernon"~ | Proximité plus recherche par radical en suffixant avec un tilde (~). | ||||
"flowers algernon"~1 | La recherche de proximité désactive la recherche par radical. | ||||
"flowers algernon"~1~ | Proximité plus recherche par radical en suffixant avec un tilde (~). |
Insource
≥ 1.24 Gerrit change 137733 |
Les recherches dans les sources peuvent être utilisées pour trouver n'importe quel mot généré sur une page, mais cela est fait pour trouver n'importe quelle phrase que vous pourriez trouver - y compris les marques MediaWiki (wikicode), sur toute page sauf celles de redirection. Cette phrase ignore complètement les espaces gris : insource: "state state autocollapse" détectera |state={{{state|autocollapse}}}
.
insource: word insource: "word1 word2" |
Les caractères d'espaces gris sont ignorés, tout comme c'est le cas pour les recherches par mots et par phrases exactes. |
insource:/regexp/ insource:/regexp/i |
Ce sont des expressions régulières. Elles ne sont pas efficaces, donc nous ne pouvons en autoriser que quelques-unes à la fois sur le cluster de recherche, mais elles sont très puissantes. Par défaut, l'expression régulière est sensible à la casse; si on veut qu'elle ne le soit pas, on peut l'indiquer avec i , ce qui est même encore moins efficace.
|
La source d'information se complète. D'une part, il a une recherche en texte intégral pour n'importe quel mot dans le wikitext, instantanément. D'autre part, il peut traiter une recherche d'expression régulière pour n'importe quelle chaîne de caractères.[6] L'expression régulière scanne tous les caractères textuels d'une liste de pages ; ils n'ont pas d'index de mots pour accélérer les choses, et le processus est interrompu s'il doit durer plus de vingt secondes. Les expressions régulières s'exécutent en dernier dans une requête, donc pour limiter le balayage inutile au niveau caractère, chacune d'elles doit inclure d'autres termes de recherche afin de limiter le nombre de documents à explorer.[7] Souvent le meilleur candidat pour ajouter à la requête par expression régulière insource:/arg/ est insource:arg, où arg a la même valeur (et n'utilise pas de joker).
La syntaxe de l'expression régulière est insource: pas d'espace, puis /regexp/ (aucun autre paramètre n'interdit un espace. Tous les paramètres sauf insource:/regexp/ acceptent généreusement l'espace après le deux-points).
Le rôle de la recherche indexée Insource et celui de la recherche des expressions régulières sont similaires à bien des égards :
- Les deux recherchent dans le wikitext seulement.
- Aucun ne trouve de résultat dans les sources transclus.
- Aucun ne fait de recherche par radical, ni des recherches floues, ni les recherches de proximité.
- Les deux veulent le moins de résultats, et les deux travaillent plus rapidement lorsqu'ils sont accompagnés d'une autre clause.
Mais les recherches indexées ignorent toutes les espaces gris ; les recherches de caractères génériques ne correspondent pas aux espaces gris, donc les expressions régulières sont le seul moyen de trouver une chaîne exacte de caractères du type « n'importe lequel et tous » les caractères, par exemple une séquence de deux espaces. Les expressions régulières sont une classe entièrement différente d'outils de recherche qui rendent la recherche d'une chaîne littérale facile (utilisation de base, niveau débutant), et rendent possible la recherche des expressions de métacaractères (utilisation avancée) sur le wiki. Voir les recherches par expressions régulières plus bas.
"in-law" insource:/-in-law/i
ou "kung" insource:/!kung/i
.
Prefixes et espaces de noms
Préfixer un terme d'espace de noms tel que file:
dans une requête de recherche va limiter les résultats à l'espace de noms concerné, au lieu de faire la recherche sur l'ensemble du wiki.
Par défaut l'espace de noms est l'espave principal Main:.
Il est seulement possible de définir un espace de noms dans la requête de la boîte de recherche.
Il doit être le premier terme de la requête, ou le dernier terme s'il figure dans un prefix:
.
Deux ou davantage d'espaces de noms peuvent être explorés dans le panneau Avancé de la barre de recherche qui se trouve en haut de chaque page de résultats de recherche Special:Search. Votre domaine de recherche en tant que profil d'espaces de noms, peut être déclaré ici. La liste des espaces de noms s'affichera toute seule ensuite sur la première page des prochains résultats de recherche pour indiquer de quel domaine de recherche ces résultats sont issus. Pour annuler ceci, sélectionnez l'espace de noms par défaut (affiché entre prenthèses), sélectionnez « Conserver la sélection pour les recherches futures », et cliquez sur « Rechercher ».
La barre de recherche affiche graphiquement et initialise un domaine de recherche. Les "pages de contenu" (principal), "Multimédia" (File), "Tout" (tous plus File), "Translations", etc... sont des hyperliens qui peuvent activer la requête dans le domaine concerné, ou indiquer qu'ils sont inactifs en devenant grisés. Mais la requête prévaut sur le contenu de la barre de recherche. Lorsqu'un espace de noms ou un prefixe est utilisé pour la requête dans la barre de recherche, les activations et les indications peuvent prêter à confusion, donc la barre de recherche et la boîte de recherche sont des façons mutuellement exclusives (et non pas complémentaires) pour positionner les domaines de recherche.
Un nom d'espace de noms prévaut sur la barre de recherche, et un nom de prefix:
prévaut sur un espace de noms.
Pour spécifier un espace de noms, préfixez-le d'un deux- points, par exemple talk:
.
Utilisez all:
pour rechercher dans tous les espaces de noms, ou :
(un seul deux-points) pour rechercher uniquement l'espace de noms de l'article principal.
Le terme all:
ne contient pas l'espace de noms 'File:', qui comprend les contenus de type 'media' se trouvant sur Commons tels que les PDF, qui sont tous indexés et recherchables.
Quand vous utilisez File, un modificateur d'espace de noms local:
a une influence, sinon il est ignoré.
Comme pour les paramètres de recherche, local:
et all:
doivent être en minuscules.
Par clntre les noms des espaces de noms ne sont pas sensibles à la casse.
Les alias d'espaces de noms sont acceptés.
talk: "Wind clock" | Trouver les pages de l'espace de noms Talk (discussions) dont le titre ou le texte contient la phrase « wind clock ». |
file: "Wind clock" | Trouver les de l'espace de noms File , dont le titre, le texte, ou le contenu du média comprend la phrase "wind clock". |
file: local: "Wind clock" | Filter les résultats du wiki Commons. |
local: "Wind clock" | Ignoré. Espace de noms de la recherche. Local est ignoré à moins d'avoir inclus File. |
prefix:
Le paramètre prefix:
détecte un nombre quelconque de caractères d'entête, de tous les noms de pages d'un espace de noms donné.[8]
Lorsque les premières lettres correspondent à un espace de noms avec deux points, le domaine de recherche change.
En ne donnant seulement que le seul espace de noms, prefix:
va couvrir tous les noms des pages qu'il contient. En ne donnant qu'un seul caractère, celui-ci ne peut être un tiret (-
) ni une apostrophe('
) ni des guillemets ("
). Le dernier caractère ne peut pas être un deux points (:).
Pour les noms de pages qui coïncident, les sous-pages correspondantes coïncident également par définition.
Le paramètre prefix:
ne permet pas d'avoir un espace avant le nom de l'espace de noms, mais autorise un espace avant un nom de page.
Ce terme se trouve toujours à la fin, de sorte que les caractères du nom de page peuvent contenir des guillemets ("
).
prefix:cow | Trouver les pages dans l'espace principal dont le titre commence par les trois lettres c o w. |
domestic prefix:cow | Trouver les pages dans l'espace principal dont le titre commence par les trois lettres c o w, et qui contiennent le mot « domestic ». |
domestic prefix:cow/ | Lister toutes les sous-pages existantes de Cow, mais seulement si elles contiennent le mot « domestic ». C'est une requête très courante qui est fréquemment construite en utilisant un paramètre d'URL spécial appelé prefix=. |
domestic prefix:Talk:cow/ | Liste toutes les sous-pages de Talk:cow, mais seulement si elles contiennent le mot « domestic ». |
1967 prefix:Pink Floyd/ | Liste toutes les sous-pages de Pink Floyd, mais seulement si elles contiennent le mot « 1967 ». |
L'extension Translate crée une espèce d' espace de noms des traductions dans lequel chaque page a ses versions traduites. Mais à la différence des espaces de noms ou des préfixes qui déterminent le domaine de recherche initial, le paramètre inlanguage est un de ses filtres. (Voir la section suivante.)
Exclure du contenu à partir de l'index de recherche
Vous pouvez exclure du contenu de l'index de recherche en ajoutant class="navigation-not-searchable"
. Cela indique à CirrusSearch d'ignorer ce contenu dans l'index de recherche (voir tâche T162905 pour connaître le contexte).
Vous pouvez en plus marquer le contenu comme étant de l'information auxilliaire en ajoutant class="searchaux"
.
Cela indique à CirrusSearch de déplacer le contenu à partir du texte principal vers un champ auxilliaire qui a une importance moindre pour la recherche, et mettre l'extrait en surbrillance.
Cette différence est utilisée pour les éléments tels que les descriptions des vignettes d'images, les sections 'voir aussi', etc.
Filtres
Un filtre peut avoir plusieurs instances, des instances inversées, et il peut également s'exécuter en tant que filtre autonome d'un domaine de recherche. Une requête est formée de termes qui filtrent un domaine de recherche.
En ajoutant un autre mot, une phrase , ou un paramètre, vous augmentez le filtrage. Le résultat d'une recherche très précise peut avoir de nombreux filtres oui/non lorsque chaque page apparaissant dans les résultats est prise en compte. (Dans ce cas, le classement n'est pas du tout significatif.) Le filtrage s'applique de manière critique lorsque vous utilisez un terme d'expression régulière; vous devez avoir le moins de pages possible avant d'ajouter une expression régulière (parce qu'il n'y a jamais d'index préparé pour sa recherche).
Un espace de noms est un domaine de recherche spécifié mais ce n’est pas un filtre parce qu’un espace de noms ne peut être recherché seul.
Un préfixe (signe -
) fournira le résultat opposé, c’est donc un filtre.
Les paramètres de recherche ci-dessous sont des filtres pour lesquels il peut y avoir plusieurs occurrences.
Insource (décrit ci-dessus) est aussi un filtre, mais insource:/regexp/ n'en n'est pas un. Les filtres et tous les autres paramètres de recherche sont en minuscules. (Les espaces de noms sont une exception, car ils ne sont pas sensibles à la casse.)
Intitle et incategory
Les recherches de mots et de phrases fonctionnent avec les titres ainsi que dans la boîte des catégories, en bas des pages. Mais avec ces paramètres, vous pouvez sélectionner seulement les titres ou seulement les catégories.
- cow*
- Trouve les articles dont le titre ou le texte contiennent des mots qui commencent par cow
- intitle:foo
- Trouve les articles dont le titre contient « foo ». La recherche par radical est activée pour foo (trouve les dérivés simples : foos, par exemple).
- intitle:"fine line"
- Trouve les articles dont le titre contient « fine line ». La recherche par radical est alors désactivée.
- intitle:foo bar
- Trouve les articles dont le titre contient « foo » et dont le titre ou le texte contiennent « bar ».
- -intitle:foo bar
- Trouve les articles dont le titre NE contient PAS « foo » et dont, par contre, le titre ou le texte contiennent « bar ».
- incategory:Music
- Trouve les articles de Catégorie:Music
- incategory:"music history"
- Trouve les articles de Catégorie:Music_history
- incategory:"musicals" incategory:"1920"
- Trouve les articles qui sont à la fois dans Catégorie:Musicals ET dans Catégorie:1920
- -incategory:"musicals" incategory:"1920"
- Trouve les articles qui NE sont PAS dans Catégorie:Musicals mais qui sont dans Catégorie:1920
Intitle et incategory sont d'anciens paramètres de recherche. Incategory ne cherche plus les sous-catégories automatiquement, mais vous pouvez maintenant ajouter plusieurs noms de pages de catégories manuellement.
≥ 1.31 Gerrit change 413896 |
Depuis MediaWiki 1.31-wmf.23 les recherches d'expression régulières sont prises en charge pour intitle :
- intitle:/regex/, intitle:/regex/i
Tout ce qui est décrit ici est aussi valable pour ces recherches, y compris les avertissements.
Deepcategory
La recherche approfondie dans les catégories permet de chercher dans les catégories et les sous-catégories. La profondeur de l'arbre est actuellement limitée à 5 niveaux (configurable) et le nombre maximum de catégories est de 256 (également configurable). La recherche approfondie utilise le service SPARQL Category de WDQS. Les mots clé sont deepcategory ou deepcat. Exemple :
- deepcat:"musicals"
- Trouve les articles qui sont à la fois dans la Catégorie:Chanson_en_français et dans n'importe quelle de ses sous-catégories.
Le gadget DeepCat qui implémentait précédemment le paramètre a été supprimé en janvier 2020.
Linksto
Linksto trouve les liens wiki vers un nom donné, et non pas les liens vers du contenu. L'entrée est le nom de la page sous forme canonique et sensible à la casse. Il doit correspondre exactement à la ligne du titre de la page de contenu, avant toute modification de la casse des lettres du titre. (C'est le {{FULLPAGENAME}}, par exemple pour la page qui contient le texte que vous lisez actuellement, il s'agit de : Help:CirrusSearch/fr.)
Linksto ne trouve pas les redirections. Il ne trouve que les [[wikilinks]], même lorsqu'ils sont créés par un modèle. Il ne trouve pas les liens constitués par une URL, même si cette URL est un lien interne du wiki.
Pour trouver tous les liens wiki vers un « Help:Cirrus Search » , si « Help:Searching » et « H:S » sont des redirections vers lui :
- linksto: "Help:Cirrus Search"
- linksto: Help:Searching
- linksto: H:S
CirrusSearch -linksto: Help:CirrusSearch
trouve les articles qui mentionnent « CirrusSearch » mais pas dans un lien wiki.
Hastemplate
Vous pouvez indiquer l'utilisation d'un modèle avec hastemplate: template
. Entrez le nom de page canonique pour rechercher toutes les utilisations de ce modèle, mais l'utilisation d'une de ses pages redirigées quelconque trouvera juste ce nom. Les alias des espaces de noms sont acceptés, les majuscules sont ignorées complètement, et les redirections sont trouvées, le tout dans une seule requête (comparez boost-template sans espace de noms par défaut; linksto sans alias d'espace de noms, sensible à la casse, sans les redirections; intitle sans les redirections).
Hastemplate trouve l'utilisation secondaire (ou le modèle méta) d'une page : il recherche les inclusions après l'expansion. C'est la même philosophie que pour les mots et les phrases d'un modèle, mais ici on s'adresse aux modèles à partir d'un modèle. La page sera listée comme ayant ce contenu même si ce contenu n'est pas visible dans le texte wiki.
- hastemplate: "quality image", trouve les utilisations de « Template:Quality image » dans votre domaine de recherche par défaut (espaces de noms).
- hastemplate: portal:contents/tocnavbar, trouve les utilisations de l'espace de noms d'un modèle « Contents/TOCnavbar » dans l'espace de noms Portal.
Pour les installations avec l'extension Translate, les recherches hastemplate sont perturbées là où le Template:Translatable template name inclut le nom du modèle d'un modèle traductible. Utilisez insource à la place.
Inlanguage
Pour les installations avec l'extension Translate, inlanguage est important avec les recherches très précises et le comptage des pages.
- inlanguage: code de langue
ne fournira les résultats de recherche que pour cette langue uniquement.
Par exemple
- pour compter toutes les pages en japonais du wiki
- all: inlanguage: ja
- pour exclure les pages en allemand et en espagnol de l'espace de noms Aide (Help)
- help: -inlanguage: de -inlanguage: es
- pour ignorer les traductions (espace de noms Translate), et là où la langue de base est l'anglais, ajoutez
- inlanguage:en
Contentmodel
Le mot clé contentmodel: permet de limiter la recherche aux pages d'un modèle de contenu spécifique. Pour les modèles possibles, voir les gestionnaires de contenu. Par exemple :
- Pour ne voir que les pages JSON :
contentmodel:json
subpageof
Pour trouver des sous-pages.
- subpageof: Page parent
Par exemple
- Pour trouver toutes les sous-pages de CirrusSearch.
- subpageof:CirrusSearch
- Utilisez les guillements si la page parent contient des espaces.
- subpageof:"Requests for comment"
Articletopic
Le mot-clé articletopic: permet de filtrer les résultats de recherche par sujet. Voir Aide:CirrusSearch/articletopic pour connaître les sujets disponibles. Par exemple articletopic:books filtrera les résultats de recherche d'articles concernant les livres. articletopic:books|films filtrera les articles concernant les livres ou les films. articletopic:books articletopic:films filtrera les articles concernant à la fois les livres et les films.
Seuls les articles de l'espace principal sont des sujets, et seuls les sujets sont disponibles sur les Wikipedias. A la différence des autres filtres, les sujets d'articles contribuent aussi à pondérer les pages : les articles qui sont trouvés le plus souvent pour un sujet donné ont un poids plus fort dans les résultats de recherche (tandis que les articles qui ne concernent pas du tout le sujet seront supprimés complètement de l'ensemble des résultats).
Les modèles de sujets sont dérivés de ORES par apprentissage automatique. Tout article reçoit un score sur des dizaines de sujets différents, et peut par conséquent apparaître sous différents mots-clé. Par exemple, l'article à propos d'Albert Einstein peut apparaître comme un article sur la « physique » et un article sur la « biographie » . Toutes les Wikipedias ont les scores disponibles -- certaines ont des modèles de sujets pour les langues locales couvrant tous les articles. Les autres langues n'ont pas de modèles ORES locaux, et utilisent pour la langue locale, les scores de la langue anglaise assignés aux articles correspondants dans la Wikipedia anglaise. Les langues avec de tels scores "cross-wiki" n'ont pas 100 % de couverture -- en fonction de la langue, on peut avoir quelque chose comme 60 % des articles qui possèdent des sujets disponibles.
Les données de recherche relatives aux sujets sont mises à jour chaque semaine, il est donc possible que les articles créés récemment n'apparaissent pas encore dans les requêtes de recherche par sujet.
Pageid
Le mot-clé pageid: restreint les résultats de la recherche à la liste des ID de page fournis. Ce n'est pas très utile pour la recherche manuelle; on peut l'utiliser avec des outils logiciels pour vérifier si un ensemble de pages correspond à l'ensemble des conditions de recherche fournies (par exemple pour valider à nouveau les résultats de recherche dans le cache).
Pondération des pages
La pondération concerne l'extrait de code, les suggestions et la pertinence de la page. Le poids normal est de un. Une pondération supplémentaire est donnée par les multiplicateurs.
Si vous ne recherchez que des mots, les pages dans lesquelles ils se trouvent dans l'ordre sont promues. Si vous ajoutez des phrases explicites quelconques à votre recherche, ou pour certains autres ajouts, cette fonctionalité de "phrase préférée" n'est pas appliquée.
Morelike
- morelike:page name 1|page name 2|...|page name n
- Trouve les articles dont le texte est presque similaire au texte des articles fournis.
morelike:wasp|bee|ant
- Trouve les articles concernant les insectes qui piquent (wasp/guêpe - bee/abeille - ant/fourmi).
morelike:template:search|template:regex|template:usage
- Trouve les modèles à propos de la recherche par expressions régulières pour une utilisation sous forme de modèles sur un wiki.
morelike
est un mot clé gourmand, ce qui signifie qu'il ne peut pas être combiné avec d'autre requêtes de recherche. Si vous voulez faire d'autres requêtes, utilisez morelikethis dans votre recherche :
morelikethis:bee hastemplate:"featured article"
- Trouver les articles concernant bees qui utilisent également le modèle « featured article ».
La requête morelike: fonctionne en choisissant un ensemble de mots dans les articles d'entrée et en effectuant une requête avec les mots choisis. Vous pouvez régler son fonctionnement en ajoutant les paramètres suivants à l'URL des résultats de recherche :
- cirrusMltMinDocFreq : Nombre minimum de documents (par tesson) qui ont besoin d'un terme pour qu'il soit pris en compte.
- cirrusMltMaxDocFreq : Nombre maximum de documents (par tesson) qui ont un terme pour qu'il soit pris en compte.
- cirrusMltMaxQueryTerms : Nombre maximal de termes à prendre en considération.
- cirrusMltMinTermFreq : Nombre minimal de fois que le terme apparaît dans l'entrée du document à prendre en compte. Pour les petits champs (title), cette valeur doit être 1.
- cirrusMltMinWordLength : Longueur minimale d'un terme à prendre en considération. La valeur par défaut est 0.
- cirrusMltMaxWordLength : La longueur maximale des mots au-dessus de laquelle les mots seront ignorés. La valeur par défaut est un nombre illimité (0).
- cirrusMltFields (liste de valeurs séparées par des virgules) : Ce sont les champs à utiliser. Les champs autorisés sont title, text, text, auxiliary_text, opening_text, headings et all.
- cirrusMltUseFields (
true
|false
) : n'utilisez que les données du champ. Par défautfalse
: le système extrait le contenu du champtext
pour construire la requête. - cirrusMltPercentTermsToMatch : Le pourcentage de termes à faire correspondre. La valeur par défaut est de 0,3 (30 %).
- Exemple :
&cirrusMtlUseFields=yes&cirrusMltFields=title&cirrusMltMinTermFreq=1&cirrusMltMinDocFreq=1&cirrusMltMinWordLength=2
Ces réglages peuvent être rendus persistants en remplaçant cirrussearch-morelikethis-settings
dans les messages système.
Prefer-recent
En ajoutant prefer-recent: n'importe où dans la requête, vous verrez les derniers articles modifiés affichés un peu plus grands que les promotions classiques pour les règles de classement des pages.
Prefer-recent est appliqué uniquement lorsque vous utilisez la valeur par défaut relevance
de l'ordre de classement.
Par défaut, la promotion s'applique sur 60% des scores sur un grand intervalle de temps qui couvre 160 jours; ceci peut être indiqué dans la requête par prefer-recent:0.6,160 . Cela fonctionne bien avec les autres règles de classement de page et est destiné à la plupart des recherches.
Vous pouvez utiliser les règles : prefer-recent:boost,recent . Techniquement « boost » est la proportion du score sur l'échelle, et « recent » est la moitié de la durée de vie en jours. La promotion est plus qu'un multiplicateur classique, c'est une progression exponentielle. Le facteur utilisé dans l'exposant représente le temps écoulé depuis la dernière modification.
Par exemple
- prefer-recent:,7
Les pages de plus de 7 jours d'ancienneté sont promues de moitié, et celles de plus de 14 jours encore de nouveau de moitié, et ainsi de suite. Pour un simple tri par date pour les résultats d'une recherche très affinée, où l'ordre de classement et la promotion des des pages sont très insignifiants, promouvez simplement l'ensemble de tous les scores.
- prefer-recent:1,7 - semaines
- prefer-recent:1,1 - jours
- prefer-recent:1,0.0007 - minutes
- prefer-recent:1,0.0001 - 8,64 secondes
- prefer-recent:1,0.00001 - secondes
Modèles de promotion
Vous pouvez améliorer les scores des pages en fonction des modèles qu'elles contiennent. Cela peut être appliqué à toutes les requêtes de recherche en déclarant des boost via MediaWiki:Cirrussearch-boost-templates, ou ad hoc dans des requêtes individuelles via l'opérateur boost-templates:""
. Si l'opérateur boost-templates
est défini dans une requête, alors le contenu de cirrussearch-boost-templates
est ignoré.
Semblable à la fonctionnalité prefer-recent
, boost-templates
est appliqué dans le cadre de l'ordre de tri par défaut de relevance
. Cela n'a aucun effet sur les autres ordres de recherche.
La syntaxe du message est la suivante :
- Tout, depuis le caractère
#
jusqu'à la fin de la ligne, est considéré comme un commentaire et ignoré. - Chaque ligne non vide est interprétée comme le nom exact d’un modèle qui doit recevoir une mise en avant (y compris le préfixe de l’espace de noms), suivi d’une barre verticale « | », suivie d’un nombre, suivi d’un caractère « % ».
Exemples corrects :
Template:Important|150% Template:Very_Very_Important|300% Template:Less_important|50%
Mauvais exemples :
Template:Foo|150.234234% # Les points décimaux ne sont pas autorisés. Foo|150% # Techniquement valable, mais agit sur les transclusions de Foo (article de l’espace principal) au lieu du Template:Foo.
Quelques exemples :
- boost-templates:"Template:Quality_Image|200%" incategory:china
- Trouve les fichiers dans la Catégorie:Chine ordonnés d'abord selon la qualité des images.
- boost-templates:"Template:Quality_Image|200% Template:Low_Quality|50%" incategory:china
- Trouve les fichiers dans la Catégorie:Chine avec en premier les images de qualité puis les images de qualité inférieure.
- boost-templates:"Template:Quality_Image|200% Template:Low_Quality|50%" popcorn
- Trouve les fichiers à propos de popcorn en triant d'abord les images de bonne qualité et en dernier, les images de qualité médiocre. Notez bien qu'en utilisant le message
cirrussearch-boost-templates
, vous pouvez réduire ceci à simplementpopcorn
.
Les points décimaux ne sont pas autorisés dans la valeur des pourcentages. Le score de recherche est tel qu’il est peu probable que des fractions de pourcentage fassent la différence.
Attention car, si vous ajoutez des pourcentages très grands ou très petits via cirrussearch-boost-templates, ils peuvent perturber le score du texte complet. Par exemple, si Wikipédia promouvait le modèle "article vedette" d'1 million de pour cent, alors les recherches de tout terme mentionné dans les articles en vedette classeraient l'article en vedette au-dessus même de l'article dédié à ce terme.
La concordance des phrases serait également balayée, de sorte qu'une recherche comme brave new world
renverrait un article à la une pour premier résultat, même s'il contient le plus souvent ces trois mots mentionnés, au lieu de l'article le plus adapté concernant Brave New World.
Recherche des expressions régulières
Une recherche indexée de base trouve les mots rendus visibles sur une page. La césure, la ponctuation et l'ajout de parenthèses, de barre oblique ou d’autres symboles mathématiques et informatiques ne sont que des limites pour les mots. Il n'est pas possible de les inclure dans une recherche indexée. Dans la plupart des cas, ce type de comportement est celui souhaité par l'utilisateur. Néanmoins quelques fois on veut pouvoir faire une recherche plus précise.
Pour contourner les lacunes syntaxiques des recherches basées sur l'index, les recherches à l'aide d'expressions régulières peuvent être utilisées. Mais comme les requêtes avec uniquement des expressions rationnelles sont très lentes et consommatrices de ressources, elles doivent toujours être combinées avec une recherche basée sur un index, de sorte que le domaine de recherche de l'expression rationnelle soit limité aux résultats d'une ou plusieurs recherches basées sur l'index.
Une expression régulière pour la recherche d'une "chaîne exacte" est une recherche de base ; la chaîne de l'expression sera simplement mise "entre guillemets" ou les caractères non alphanumériques seront échappés avec des barres obliques inversées '\' (backslash). Toutes les recherches d'expressions régulières nécessitent également que l'utilisateur développe un filtre simple pour générer le domaine de recherche afin que le moteur d'expression régulière puisse travailler (basé sur un index marqué en gras, partie de l'expression régulière marquée en italique) :
- 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}}
Le dernier exemple fonctionne à partir d'un lien sur une page, mais {{FULLPAGENAME}} ne fonctionne pas dans la boîte de recherche.
Par exemple : [[Special:Search/insource:/regex/ prefix:{{FULLPAGENAME}}]] recherche le terme regex sur cette page.
Une requête sans espace de noms ni préfixe spécifié recherche votre domaine de recherche par défaut (paramétrable sur n’importe quelle page de résultats de recherche, c’est-à-dire sur Special:Search). Certains utilisateurs conservent leur domaine de recherche par défaut sur tous les espaces de noms, c’est-à-dire sur tout le wiki. Sur un wiki de grande taille, si cet utilisateur effectue une recherche à la base d'une expression régulière nue, il échouera probablement, entraînant l'expiration du délai d'attente HTML, avant de terminer la recherche.
Une recherche d'expression régulière parcourt actuellement les caractères un par un sur chacune des pages du domaine de recherche. Au contraire, une recherche indexée interroge actuellement quelques enregistrements d'une base de données gérée séparément de la base du wiki, et fournit les résultats presque instantanément. Donc lorsque vous utilisez un insource:// (une expression régulière quelconque), prévoyez d'utiliser une règle qui va limiter le plus possible le domaine de recherche de l'expression. De nombreux termes de recherche utilisent un index et fournissent donc instantanément un domaine de recherche plus affiné pour l'expression régulère. Par ordre d'efficacité générale:
- insource:"" avec des guillemets, dupliquer l'expression régulière sans les slash ni les caractères d'échappement est l'idéal.
- intitle (sans recherche d'expressions régulières), incategory, et linksto sont des filtres excellents.
- hastemplate: est un très bon filtre.
- "word1 word2 word3", avec ou sans les guillemets est valide.
- namespace: est pratiquement inutile, mais peut permettre à une recherche lente d'expression régulière, de se terminer.
Pour tester une requête avec une expression régulière nue, vous pouvez créer une page avec des modèles de test, puis utiliser le paramètre préfixe avec ce nom de page complet. La correspondance sera mise en surbrillance. Cette page ainsi que ses sous-pages seront recherchées (dans la base de données).
Les termes de la recherche qui n'augmentent pas l'efficacité de la recherche d'une expression régulière sont les opérateurs de score de page : morelike, boost-template, et prefer-recent.
Métacaractères
Cette section décrit la manière d'échapper les métacaractères utilisés dans les recherches des expressions régulières Pour la signification actuelle des métacaractères voir l'explication de la syntaxe.[9]
Par exemple :
- pour rechercher un espace de noms, évaluez le nombre de pages avec un seul terme qui est un espace de noms. Ceci listera le nombre de pages dans cet espace de noms.
- pour commencer par chercher à nouveau ce que vous avez déjà pu voir, comme "wiki-link" ou "(trans[in]clusion)" démarrez avec l'espace de noms et les filtres insource.
Il existe quelques différences notables par rapport aux métacaractères standard des expressions régulières :
- Le
\n
ou le\r\n
ne sont pas réservés pour détecter les passages à la ligne. Pour rechercher une chaîne qui contient un passage à la ligne, vous pouvez faire une recherche telle queinsource:/[^\}]\}\}[^\} \|]{2}\<noinclude/i
qui signifie pas une accolade, puis deux accolades, puis deux caractères qui ne sont pas des accolades, un espace, ou une barre verticale, puis une balise<noinclude>
. Le tout caractère sauf inclut le passage à la ligne dans la recherche. Notez bien que cette recherche a été faite pour ne détecter que la chaîne suivante :
}} <noinclude>
- Le métacaractère point
.
remplace n'importe quel caractère y compris le passage à la ligne, donc.*
capture tout. - Le signe numérique dièse
#
signifie quelque chose, et doit être échappé.[10] - Les caractères
^
et$
ne sont pas implémentés. Comme "grep" (global par ligne, expression régulière, imprime chaque ligne), chaque insource:// est un « global au document, expression régulière, lister de résultats de la recherche de chaque document » par document. <
et>
acceptent un intervalle numérique sur plusieurs digits comme le fait[0-9]
, mais sans se préoccuper du nombre de positions de caractères, ou de l'intervalle pour chaque position, donc<9-10>
est accepté, de même que<1-111>
.
Substitutions de quelques métacaractères
Bien que les classes de caractères \n
, \s
, \S
ne soient pas prises en charge, en cas de besoin urgent de les utiliser dans une expression régulière, vous pouvez utiliser les solutions de contournement suivantes :
PCRE | CirrusSearch | Description |
---|---|---|
\n |
[^ -] |
Un saut de ligne (peut aussi trouver un caractère de tabulation)[11] |
[^\n] |
[ -] |
N’importe quel caractère, à l’exception d’un saut de ligne et d’une tabulation |
\s |
[^!-] |
Un espace séparateur : sont assimilés le caractère espace lui-même, le passage à la ligne et la tabulation |
\S |
[!-] |
Tout caractère sauf le caractère espace |
Dans ces plages, « » (espace) est utilisé comme le caractère qui suit immédiatement les caractères de contrôle, « ! » – le caractère qui le suit immédiatement, et « » comme le caractère U+10FFFF, qui est le dernier caractère de Unicode. Ainsi, la plage de « » à « » inclut tous les caractères à l’exception de ceux de contrôle, dont les articles peuvent contenir des sauts de ligne et des tabulations, tandis que la plage de « ! » à « » inclut tous les caractères à l’exception de ceux de contrôle et de l’espace.
Affinage avec une chaîne exacte
- pour affiner le processus de recherche avec ce que vous désirez voir, comme "2 + 2 = 4", ou "site.org" c'est idéalement la meilleure utilisation des expressions régulières, parce que cela consiste à ajouter pour affiner la recherche, un seul terme à l'expression régulière : le nombre maximum de pages que l'expression régulière doit parcourir pour faire la recherche.
Vous pouvez commencer en essayant la recherche d'une chaîne de caractères exacte, mais gardez à l'esprit :
- l'expression régulière ne cherche que dans le wiki code et non pas dans le texte généré, donc il y a quelques différences en ce qui concerne le marquage, et même le nombre de caractères espace doit correspondre exactement.
- Vous devez fournir un filtre d'accompagnement.
- Vous devez apprendre comment échapper les métacaractères des expressions régulières.
Il y a deux manières d'échapper des métacaractères. Elles sont toutes deux utiles individuellement, et parfois aussi concaténées dans l'échappement d'une chaîne.
- Effectuer l'échappement avec des barres obliques inverses pour l'un d'entre eux \char. L'expression insource:/regexp/ utilise des barres obliques pour délimiter l'expression régulière. En donnant /reg/exp/ il y a ambiguité, donc vous devez écrire /reg\/exp/.
- Mettez une des chaînes entre guillemets "string". Parce que échapper un caractère ne peut pas faire de mal, vous pouvez échapper ainsi tout caractère même ceux comprenant des métacaractères. L'échappement avec des guillemets est plus propre.
- Vous ne pouvez pas mélanger les méthodes mais vous pouvez les concaténer.
L' échappement avec les guillemets en utilisant insource:/"regexp"/ est une manière facile de chercher plusieurs sortes de chaînes, mais vous ne pouvez pas échapper à l'aide de la barre oblique inverse n'importe quoi à l'intérieur d'une séquence échappée avec des guillemets.
/"[[page/name|{{temp-late"/
au lieu de/\[\[page\/name\|\{\{temp\-late/
/"literal back\slash"/
est aussi valable que/literal back\\slash/
- Mais
/"This \" fails"/
toujours. - Et
/"This \/ depends"/
. Il trouve littéralement le\/
, qui n'est pas le/
que vous vouliez probablement.
L' échappement avec la barre oblique inversée en utilisant insource:/regexp/ permet d'échapper les délimiteurs " et / , mais nécessite de prendre en compte les métacaractères, éventuellement en les échappant :
- Pour capturer un caractère délimiteur
/
utilisez\/
. - Pour capturer un caractère délimiteur
"
, utilisez\"
. - Les méta caractères échappés seraient
\~\@\#\&\*\(\)\-\+\{\}\[\]\|\<\>\?\.\\
. - L'expression équivalente échappée avec des guillemets est
"~@#&*()-+{}[]|\<>?.\"
.
L'algorithme le plus simple pour créer une expression de recherche basique en utilisant insource:/"regexp"/, n'a pas besoin de prendre en compte les métacaractères à l'exception des caractères " et / :
- Générer
the/str"ing
. (Les /" délimiteurs "/ ne sont pas montrés.) - Remplacez
"
par"\""
(précédents guillemets : stop, concaténer, quote restart). - Remplacer
/
par"\/"
(stop, concatenate, start). - Vous obtenez
insource:/"the"\/"str"\""ing"/
, montrant la concaténation des deux méthodes.
La notation entre crochets pour la création de votre propre classe de caractères échappe également ses métacaractères. Pour cibler un crochet littéral fermant (]) dans votre modèle de classe de caractères, vous devez utiliser une barre oblique inversée échappée, sinon cela peut être interprété comme le délimiteur de fermeture de la définition de modèle de classe de caractères.
La première position d'une classe de caractères échappera également au crochet fermant. À l'intérieur des crochets délimitant une classe de caractères, le caractère tiret a également une signification particulière (plage), mais il peut également être inclus littéralement dans la classe de la même manière que le crochet fermant.
Par exemple, ces deux modèles détectent un caractère qui est soit un tiret (-) ou un crochet fermant (]) ou un point (.) : [-.\]]
or [].\-]
.
Pour des exemples généraux utilisant les méta caractères :
- insource:"2+2=4" insource:/"2+2=4"/ détecte "2 + 2 = 4", sans espace entre les caractères.
- insource:"2 + 2 = 4" insource:/2 ?\+ ?2 ?= ?4\./ détecte sans ou avec un espace intermédiaire. Le signe égale '=' n'est pas un méta caractère, mais le plus '+' l'est effectivement.
- insource:"<tag>[[link|2\3?]]\</tag>" insource:/"<tag>[[link|2\3?]]<"\/"tag>"/
Expressions régulières sur les titres
Le mot clé insource ne fait que chercher dans le contenu source de la page. Pour exécuter des recherches d'expressions régulières sur les chaînes des titres, intitle:/regex/ peut être utilisé.
Exemple avancé
Par exemple, utiliser des méta caractères pour rechercher l'utilisation d'un modèle appelé Val comportant, dans l'appel du modèle, un paramètre non nommé contenant un nombre éventuellement signé, composé de trois à quatre chiffres, éventuellement entouré d'espaces, et sur la même page, dans un appel de modèle Val, un argument nommé fmt=commas
ayant des espaces autorisés autour de lui, (il peut s'agir du même appel de modèle, ou d'un appel séparé) :
hastemplate:val insource:"fmt commas" insource:/\{\{ *[Vv]al *\|[^}]*fmt *= *commas/ insource:/\{\{ *[Vv]al *\|[^}]*[-+]?[0-9]{3,4} *[|}]/
Notez que le signe = dans fmt commas n'est pas utile mais que si vous le mettez vous ne modifiez pas les résultats. Il est rapide car il utilise deux filtres afin que chaque page explorée par l’expression régulière ait le potentiel le plus élevé possible.
Recherche géographique
Recherche basée sur les coordonnées (principales) associées aux pages.
Dépend de Extension:GeoData et {{#coordinates:}}
limitée, dans un rayon
Vous pouvez limiter la recherche aux pages identifiées comme se trouvant à proximité de certaines coordonnées géographiques. Les coordonnées peuvent être soit spécifiées par le couple (lattitude, longitude), ou en fournissant un titre de page à partir duquel les coordonnées peuvent être obtenues. Pour limiter la recherche, préfixez avec la distance si vous le souhaitez. Exemples :
- neartitle:"San Francisco"
- neartitle:"100km,San Francisco"
- nearcoord:37.776,-122.39
- nearcoord:42km,37.776,-122.39
par promotion de page
Vous pouvez aussi augmenter le score des pages à l'intérieur d'une zone géographique. La syntaxe est la même que pour la recherche limitée, mais avec le mot boost- préfixé au mot clé. Ceci double effectivement le score des pages à l'intérieur de l'intervalle de recherche, en donnant une meilleure chance aux résultats de la recherche de proximité d'apparaître dans les premiers.
- boost-neartitle:"San Francisco"
- boost-neartitle:"100km,San Francisco"
- boost-nearcoord:37.776,-122.39
- boost-nearcoord:42km,37.776,-122.39
Recherche des propriétés de fichier
≥ 1.28 Gerrit change 311061 |
Depuis MediaWiki 1.28, CirrusSearch prend en charge l'indexation et la recherche des propriétés des fichiers de l'espace de noms File:
. Ceci inclut :
- Type du fichier média
- Type MIME
- Taille
- Largeur et hauteur
- Résolution
- Profondeur de bit pour les fichiers qui l'utilisent
File:
. Il est recommandé d'inclure ces espaces de noms dans une recherche ou de la restreindre à seulement cet espace de noms lorsque l'on utilise ces conditions.filetype
La recherche du type de fichier permet de trouver les fichiers en fonction de leur classification, tels que les documents de bureau, les vidéos, les images matricielles, les images vectorielles, etc. Voici les types de fichiers qui existent actuellement :
UNKNOWN
BITMAP
DRAWING
AUDIO
VIDEO
MULTIMEDIA
OFFICE
TEXT
EXECUTABLE
ARCHIVE
Ceci peut être étendu à l'avenir. Voir aussi les constantes MEDIATYPE_*
dans Defines.php
.
La syntaxe de la recherche est : filetype:{type}. Exemple:
filetype:video - recherche de toutes les vidéos
La recherche de type de fichier est indépendante de la casse.
filemime
Détecte le type MIME des fichiers. La syntaxe est :
filemime:{MIMEtype} - recherche les fichiers pour ce type de MIME
Si l'argument est avec des guillements, c'est la recherche exacte qui est réalisée. Sans guillements, les correspondances partielles de composants du type de MIME seront également acceptées.
Exemples :
- filemime:"image/png" - recherche les fichiers dont le type MIME est exactement
image/png
- filemime:pdf - recherche tous les documents PDF
- -filemime:pdf - sauter tous les documents PDF (particulièrement sur Commons)
La recherche sur le type de MIME n'est pas sensible à la casse.
filesize
Recherche de fichiers ayant la taille donnée, en kilo octets (un kilo octet = 1024 octets). La syntaxe est :
- filesize:{number} ou filesize:>{number} - fichier dont la taille correspond au moins à la valeur fournie
- filesize:<{number} - fichier dont la taille n'excède pas le nombre fourni
- filesize:{number},{number} - fichier dont la taille est comprise entre les nombres fournis
Exemples :
- filesize:>20 ou filesize:20 - fichiers de 20 Ko et supérieurs
- filesize:<1024 - fichiers plus petits que 1Mo
- filesize:100,500 - fichiers dont la taille est entre 100 Ko et 500 Ko
Dimensions des fichiers
Il est possible de chercher les dimensions spécifiques des fichiers: largeur, hauteur, résolution (définie comme la racine carrée de : hauteur x largeur), et profondeur de bit. Tous les fichiers ne possèdent pas ces propriétés. La syntaxe est :
- {measure}:{number} - fichier dont la mesure correspond au nombre fourni
- {measure}:>{number} - fichier dont la mesure correspond au moins au nombre fourni
- {measure}:<{number} - fichier dont la mesure correspond au plus au nombre fourni
- {measure}:{number},{number} - fichier dont la mesure est dans l'intervalle des nombres fournis
Où measure
peut valoir :
filew ou filewidth - taille du fichier
fileh ou fileheight - hauteur du fichier
fileres - résolution du fichier (voir ci-dessus)
filebits - profondeur de bit du fichier
Exemples :
filew:>800 fileh:>600 - fichier dont la taille est au moins de 800x600 pixels
filebits:16 - fichiers dont la profondeur de couleurs est de 16 bits
fileheight:100,500 - fichier entre 100 et 500 pixels de hauteur
Recherches dans Wikibase
L'extension Wikibase définit quelques mots clé pour faciliter la recherche de certains éléments dans la base de données du wiki. Ceci est utile pour Wikidata et les autres sites Wikibase, y compris pour la recherche d'images avec les Données structurées sur Wikimédia Commons . Voir Help:WikibaseCirrusSearch pour les détails.
Résultats de recherches inter wiki
Deux types de résultats inter-wikis peuvent être affichés lors de la recherche sur Wikipedia.
La recherche inter projets (aussi appelée recherche inter wiki, recherche frère, ou recherche dans les projets frère) affiche les résultats supplémentaires venant des autres projets (Wiktionary, Wikisource, Wikiquote, etc.) sur le côté de la page des résultats Wikipedia. La recherche inter projets est disponible sur la plupart des Wikipedias ayant des projets frères.
La recherche inter langues (voir ce billet de blog) fait référence aux résultats supplémentaires affichés sous les résultats principaux venant d'une Wikipedia de langue différente. La recherche inter langues utilise une version souvent modifiée et optimisée d'un détecteur de langue léger appelé TextCat . La recherche inter langues n'est actuellement disponible que sur quelques Wikipedias (pour les détails, voir le lien TextCat).
Ordres de tri explicites
En plus du tri par défaut basé sur la pertinence, CirrusSearch peut fournir des résultats à quelques autres ordres de tri.
En spécifiant un ordre de tri différent de relevance
vous désactiverez tous les mots clé de la recherche qui affectent l' évaluation par score, tels que prefer-recent
ou boost-templates
.
Les mots clé seront encore analysés syntaxiquement mais n'auront pas d'effet.
Les options de tri sont disponibles actuellement à partir de l'API MediaWiki en fournissant le paramètre srsort
.
Direction :
Les options de tri peuvent être ajoutées manuellement à une URL de recherche en ajoutant &sort=order
, par exemple :
Les ordres de tri valides incluent :
Supplément d’URL | Description |
---|---|
&sort=incoming_links_asc
|
Du plus petit nombre de liens entrants au plus grand. Approximativement du moins populaire à celui qui en est le plus. |
&sort=incoming_links_desc
|
Du nombre de liens entrants le plus grand au plus petit. Approximativement, du plus populaire à celui qui en est le moins. |
&sort=last_edit_asc
|
Du moins récent au plus récent modifié |
&sort=last_edit_desc
|
Du moins récent au plus récent modifié |
&sort=create_timestamp_asc
|
Du moins récent au plus récent créé |
&sort=create_timestamp_desc
|
Du plus récent créé au moins récent |
&sort=just_match
|
Un simple tri de pertinence basé seulement sur la correspondance du texte |
&sort=relevance
|
Un tri de pertinence prenant en compte de nombreuses fonctionnalités du document |
&sort=random
|
Rendu aléatoire |
&sort=none
|
Non trié, listes triées arbitrairement. Préféré lorsque les résultats sont très nombreux. |
Interface pour les options avancées
L'extension AdvancedSearch ajoute une interface améliorée à la page de recherche permettant l'utilisation de plusieurs options décrites ci-dessus sous une forme conviviale. Voir ici pour le manuel utilisateur.
Voir aussi
- Extension:CirrusSearch/fr
- Suggestion de complétion - la fonctionnalité de recherche incrémentale de CirrusSearch
- Wikimedia Search Platform/Search/Glossary — définitions, contexte, et liens pour les termes relatifs à la recherche.
- Voir Help:Rechercher pour MWSearch, utilisé sur la plupart des wikis qui n'ont pas l'extension search.
Liens externes
- De Lucene, documentation très pointue.
- Spécifications complètes dans les tests des extensions du navigateur Comme depuis 2017
- Extension:CirrusSearch/Profiles – ensembles de paramètres adaptables qui influencent différents aspects de l'indexation
- Wikimedia blog articles related to search
- WMF Global Search
Notes et références
- ↑ Notez que le sous-titre du site ne fait pas partie du contenu effectif. Pour visionner le contenu qui peut être cherché pour une page, ajoutez ?action=cirrusdump à l’URL.
- ↑ Les mots d’arrêt sont rarement appelés avec CirrusSearch, excepté lorsqu’ils font partie de certains types d’expressions, comme expliqué plus bas.
- ↑ Les paramètres CirrusSearch n’utilisent pas une manière uniforme de traiter ces termes de recherche.
- ↑ Le même analyseur utilisé pour indexer le wikicode est aussi utilisé pour analyser les requêtes.
- ↑ Par exemple, les termes communs de ce wiki (Mediawiki.org) sont cherchés de façon redondante :
- udp2log ou udp2log2 (le 2 supplémentaire affecte le classement)
- html2wt ou wt2html
- log2ip ou ip2log
- ↑ Les expressions régulières CirrusSearch n'adressent pas directement le caractère de passage à la ligne, mais un point . correspondra à une nouvelle ligne.
- ↑ La recherche d'expression régulière lente ne peut pas désactiver cette recherche, mais peut en bloquer une autre car le nombre de ces recherches en parallèle est limité.
- ↑ Le préfixe ne correspond pas aux premiers caractères des noms complets des pages, donc vous ne pouvez pas dans la même requête, chercher dans deux espaces de noms à la fois simplement parce qu'ils commencent par les mêmes lettres, comme par exemple espace de noms et espace de noms de discussion.
- ↑ Pour la définition formelle voir la grammaire Lucene pour les expressions régulières.
- ↑ Classe RegExp, syntaxe RegExp Lucene
- ↑ Pour exclure le caractère de tabulation, copie le et ajoute le à l'ensemble de caractères.