Справка:CirrusSearch

This page is a translated version of the page Help:CirrusSearch and the translation is 79% complete.
PD Примечание: Редактируя эту страницу, вы соглашаетесь на передачу своего вклада по лицензии CC0.
Подробнее — в проекте Помощь с общественным достоянием.
PD

Самый быстрый способ найти информацию в проектах Викимедиа — поискать её напрямую. На каждой странице есть поле «поиск».

CirrusSearch — это расширение MediaWiki, использующее Elasticsearch для предоставления расширенных возможностей поиска по сравнению с базовыми инструментами поиска в MediaWiki. Фонд Викимедиа использует CirrusSearch во всех проектах Викимедиа. Эта страница описывает возможности CirrusSearch. Если вы не нашли ответ на ваш вопрос здесь, то не стесняйтесь задать его на странице обсуждения, и кто-нибудь обязательно ответит вам.

Информацию о расширении MediaWiki можно найти по ссылке Расширение:CirrusSearch .

Об использовании в Викиданных — см. Help:Extension:WikibaseCirrusSearch .

Как это работает

Введите ключевые слова или фразы и нажмите клавишу ↵ Enter или Return на своей клавиатуре. Или нажмите на значок с лупой, кнопку «Найти» или «Перейти».

При совпадении введённого вами с заголовком страницы вы будете перенаправлены на неё. В ином случае поиск ведётся по всем страницам википроекта, а в виде его результата выдаётся список соответствующих запросу страниц либо сообщение об отсутствии таких страниц.

При нажатии на кнопку «Найти» без ввода поисковых фраз вы будете перенаправлены на страницу «Служебная:Поиск», где доступны дополнительные опции поиска (также доступно с любой страницы поисковой выдачи).

Вам может быть удобно ограничить поиск определёнными пространствами имён, например, искать только среди страниц пространства «User». Проверьте пространства имен, которые требуются для этого поиска.

Все ключевые слова, указанные ниже, чувствительны к регистру и даны в нижнем регистре.

Что улучшено?

Поисковой движок CirrusSearch включает три главных улучшения по сравнению с базовой функциональностью MediaWiki:

  • Лучшая поддержка поиска на разных языках.
  • Более быстрые обновления поискового индекса, что означает, что изменения в статьях будут отображаться в поиске намного скорее.
  • Раскрывающиеся шаблоны: всё содержание, подставляемое из шаблона, будет отображено в результатах поиска.

Как часто обновляется поисковый индекс?

Следует рассмотреть два основных поисковых индекса:

Первый — полнотекстовый поиск на Special:Search. Этот индекс обновляется практически в режиме реального времени. Изменения в страницах должны попадать в поисковый индекс через несколько минут после их внесения, но 30-минутное отставание по-прежнему считаются нормальным. Хотя правки шаблонов должны отражаться в статьях, куда эти шаблоны включены, уже спустя несколько минут, этот процесс может занимать до нескольких часов — в зависимости от количества страниц, использующих шаблон. Нулевая правка в статье позволяет обойти очередь, но в ней нет необходимости, если всё работает нормально.

Вторым индексом, который следует рассмотреть, является нечеткий поиск по заголовкам с автозаполнением. Этот индекс обновляется один раз в день и отражает то, что было найдено в индексе полнотекстового поиска на момент обновления индекса. В зависимости от времени, на поиск новой страницы в системе автозаполнения нечетких заголовков может уйти два дня. Если это неприемлемо для конкретного варианта использования, в параметрах поиска пользователя можно изменить автодополнение заголовка на классический префиксный поиск, который использует индекс полнотекстового поиска.

Поисковые подсказки

Вводя запрос в окно поиска, вы видите выпадающий список «поисковых подсказок» — статей, названия которых начинаются с введённой вами фразы; список отсортирован, исходя из грубой оценки качества этих статей. При этом учитывается количество вики-ссылок и перенаправлений, ссылающихся на статью, размер страницы, количество внешних ссылок, количество заголовков.

Поисковые подсказки можно пропустить, и запросы будут отправляться непосредственно на страницу результатов поиска. Добавьте тильду ~ перед запросом. Пример — «~Фрида Кало». Поисковые подсказки по-прежнему появятся, но в любой момент нажатие клавиши «Ввод» приведёт вас к странице результатов поиска.

Для некоторых языков включено «сворачивание» диакритических знаков (т.е., вероятно, символы «е» и «ё» не будут различаться); детали зависят от языка.

The algorithm used to rank suggestions is described in more detail at Extension:CirrusSearch/CompletionSuggester#Ranking criteria.

Полнотекстовый поиск

«Полнотекстовый поиск» (тот, что приводит на страницу результатов) осуществляется на основании т.н. «поискового индекса». Все вики-страницы хранятся в базе данных вики-сайта, и все слова в них включены в специальную поисковую базу данных, содержащую указатели на полные тексты статей. Каждое видимое слово индексируется в список страниц, где оно встречается, поэтому поиск по слову в тексте происходит так же быстро, как поиск конкретного названия страницы.[1] Кроме того, каждое изменение в формулировке приводит к обновлению индекс поиска течение нескольких секунд.

Существует много индексов «полного текста» вики-сайта для разных видов поиска. Полный вики-текст индексируется много раз во много специальных индексов, каждый из которых парсит вики-текст так, чтобы оптимизировать его использование. Примеры:

  • «Вспомогательный» текст, включающий примечания, подписи, содержание, а также вики-текст, классифицированный HTML-атрибутом class=searchaux.
  • «Вступительный» текст — вики-текст, идущий до первого заголовка.
  • Текст с названиями «категорий» — список категорий внизу страницы.
  • Шаблоны индексируются. Если текст шаблона изменится, то все страницы со включением шаблона изменятся. (Это может занять большое время в зависимости от очереди задач). Если изменится шаблон, используемый в другом шаблоне, то этот индекс обновится.
  • Содержимое документов в пространствах имён Файл/Media теперь также индексируется. Распознаются тысячи форматов.

Реализована поддержка для десятков языков, но желательна поддержка всех языков. Список поддерживаемых языков: elasticsearch.org; чтобы отправить запрос или правку, смотрите документацию о вкладе в проект. Для поддержки дополнительных языков, не охваченных Elasticsearch, также используются сторонние библиотеки с открытым исходным кодом.

CirrusSearch оптимизирует ваш запрос и запустит его. Полученные заголовки взвешены по релевантности и сильно переработаны, 20 в раз, для страницы результатов поиска. Например, из статьи выбираются фрагменты, а в строчном тексте выделяются поисковые термины.

Результаты поиска часто сопровождаются различными предварительными отчетами. Они включают Вы имели в виду (исправление орфографии), а когда в противном случае результаты не были бы найдены, будет написано Показаны результаты для (исправление запроса) и Вместо этого ищите (ваш запрос).

К функциям поиска также относятся:

  • Сортировка результатов по количеству входящих ссылок.
  • Символ тильды ~ в начале поисковой строки для отключения навигации и подсказок с сохранением рэнкинга страниц.
  • Интеллектуальное сопоставление символов путем нормализации (или «свёртывания»), т.е. приведения символов, которые не вводятся с клавиатуры, в символы, вводимые с клавиатуры.
  • На странице результатов поиска найденные слова и фразы выделяются полужирным начертанием. Механизм выделения работает уже после индексного поиска, который находит страницу, поэтому выделение может не всегда быть корректным, особенно для регулярных выражений (regex). Маркер выделения может быть более или менее точным, чем индексатор.

Слова, фразы и поисковые модификаторы

Просто поисковой запрос представляет собой слово или "фразу в кавычках". Подробности различаются в зависимости от языка, особенно для языков без пробелов, но поиск обычно распознает «слово» как:

  • строка цифр
  • строка букв
  • подслова ограниченные переходами буква/цифра, как в txt2regex
  • подслова внутри составногоИмени с использованием camelCase

«Стоп-слова» — это слова, игнорируемые поиском (например, из-за их широкой распространённости или по иным причинам). Список стоп-слов зависит от языка, и не все языки поддерживают стоп-слова.[2] Заданный поисковый термин соответствует content (отображается на странице). Для сопоставления с викитекстом используйте параметр поиска insource (см. section ниже). Каждый поисковый параметр имеет свой собственный индекс и интерпретирует заданный термин по-своему.[3]

Пробелы между словами, фразами, параметрами и входными данными для параметров могут включать большое количество пробелов и «серых символов». "Greyspace characters" are all the non-alphanumeric characters ~!@#$%^&()_+-={}|[]\:";'<>?,./. Смешанная строка из «серых символов» и пробельных символов называется «серым пространством» и рассматривается как одна большая граница слова. Грейспейс - это то, как создаются индексы и интерпретируются запросы.[4]

Два исключения: 1) встроенная: столбец - это одно слово (это рассматривается как буква), и 2) встроенный комета, например, в 1,2,3, рассматривается в качестве числа. Символы серого пространства игнорируются, если только из-за синтаксиса запроса они не могут быть интерпретированы как символы модификатора.

The modifiers are ~ * \? - " ! . Depending on their placement in the syntax they can apply to a term, a parameter, or to an entire query. Word and phrase modifiers are the wildcard, proximity, and fuzzy searches. Each parameter can have their own modifiers, but in general:

  • A fuzzy-word or fuzzy-phrase search can suffix a tilde ~ character (and a number telling the degree).
  • Характер tilde ~, предложенный первому термину запроса, гарантирует результаты поиска вместо любой возможной навигации.
  • Дикий знак в слове может быть (убежавшим) вопросом? для одного символа или для звездочки $астерикс для нуля или более символов.
  • Truth-logic может интерпретировать AND и OR, но параметры не могут. Обратите внимание, что операторы AND и OR в настоящее время не функционируют в традиционной манере true-logic! Подробнее см. в логические операторы.
  • Логика истины понимает - или !, предложенные к термину, чтобы перевернуть обычное значение этого термина от "совпадение" к "исключение".
Слова, начинающиеся с - или !, такие как -in-law или !Kung, могут точно соответствовать заголовкам и перенаправлениям, но также будут соответствовать всем документам, которые не содержат отрицаемого слова, что обычно свойственно почти всем документам. To search for such terms other than as exact matches for titles or redirects, use the insource search parameter (See section below).
  • Кавычки вокруг слов значат поиск "точных фраз". Для параметров они также необходимы для определения ввода нескольких слов.
  • Голосование автоматическое, но оно может быть отключено с помощью "точных фраз".
Двумя подстановочными символами являются звездочка и (экранированный) вопросительный знак, и оба могут располагаться в середине или в конце слова. Экранированный знак вопроса \? означает один символ, а звёздочка * означает любое количество символов. Поскольку многие пользователи вместо написания запроса задают вопрос, любой вопросительный знак игнорируется, если только \? намеренно не экранирован в его подстановочном значении.

Поиск фразы может быть инициирован различными подсказками для поисковой системы. Каждый метод подсказки имеет побочный эффект, заключающийся в том, насколько толерантным будет соответствие последовательности слов. Для подсказок greyspace, camelCase или txt2number:

  • Если words-joined_by_greyspace(characters) или wordsJoinedByCamelCaseCharacters , то он найдет words joined by ... characters, в их голых формах или формах серого пространства.
  • txt2number будет соответствовать txt 2 number или $t2нп.
  • Запретные слова включены для краевых случаев (в периферии) фразы grey_space или camelCase. Пример, использующий the, of, и a, заключается в том, что the_invisible_hand_of_a соответствует invisible hand в тексте meetings invisible hand shake.

Отчет о "поиске вместо" запускается, когда во фразе игнорируется всеобще неизвестное слово.

Каждый из следующих типов совпадения фраз содержит и расширяет толерантность совпадений предыдущего:

  • "Точная фраза" "в цитатах" будет терпеть (совпадать с) серого пространства. Если "exact_phrase" или "exact phrase", то это соответствует "exact]phrase".
  • Greyspace_phrase инициирует проверку стемминга и «стоп-слов».
  • При наличии CamelCase он будет «дополнительно» соответствовать camelcase, полностью в нижнем регистре, поскольку CirrusSearch не чувствителен к регистру при сопоставлении. Обратите внимание, что CamelCase совпадение не включено на всех языках.

Некоторые параметры интерпретируют фразы серого пространства, но другие параметры, такие как insource, интерпретировали только обычную "фразу в цитатах".

В терминологии поиска поддержка "свитанги" означает, что поиск "плавающий" также будет включать "плававший" и "плававшийся", но не может включать нерегулярные формы, такие как "плавающая".
Поисковая фраза parserfunction parserFunction parser function parser-function parser:function parSer:funcTion
parserfunction      N  N  N  N
"parser function"  N  N      N  N
parser_function  N        N  N
parserFunction          N  N
"parser:function"  N  N  N  N    
"parser_function"  N  N      N  N
"parSer_funcTion"  N  N      N  N
parSer_FuncTion  N  N        

Обратите внимание, что все, что происходит, - это нечувствительные к делу.

Обратите внимание, как поиск "точных фраз" интерпретировал встроенный:колонный знак как букву, но не встроенное_подчеркнутый знак. Аналогичное событие происходит с символом сделок $комы внутри числа.

При наличии in:this:word CirrusSearch в контексте «точной фразы» (включая контекст параметра insource) не будет соответствовать in, this или word, а будет соответствовать только in:this:word.

В противном случае помните, что для CirrusSearch «слова — это буквы, цифры или их комбинации, регистр не имеет значения».

Общепринятое слово поиск использует пространственный характер и агрессивно относится к исходу, а когда к тем же словам присоединяются символы серого пространства или верблюдица, они агрессивенны к фразам и подсловам.

Когда в фразе серого пространства включаются такие общие слова, как "от" или "от", они игнорируются, чтобы соответствовать более агрессивно.

Термин поиска greyspace_phrase, или camelCase, или термин txt2number, соответствуют обозначенным словам взаимозаменяемо. Вы можете использовать любую из этих трех форм.[5] Теперь camelcase совпадает с camelCase, потому что Search не чувствительный к делу, но $camelKase2 совпадают с $camalCase2, потому что camelCase более агрессивный. Как и в остальном поиске, подсловы "слова" не относятся к конкретным случаям. Для сравнения, "точная фраза" ориентирована на серое пространство и игнорирует числовые или буквенно-case переходы и исходные. "Словы, цитируемые" не чувствительны к случаям.

Из таблицы мы можем предположить, что базовый поиск parser_function -"parser function" - это сумма базовых поисков parserFunction и parser<stems> function<stems>.

Проведя исследования с помощью цифр, мы обнаружили, что:

  • Plan9 or Plan_9 matches any of: plan9, plans 9, planned 9th, (planned) 9.2, "plans" (9:24)
  • "plan9" only matches plan9 (case insensitive)
  • Plan*9 matches plan9 or planet4589.

Подстановочный знак «звездочка» * соответствует строке букв и цифр в отображаемом слове, «но не начальному символу». Один или несколько символов должны предшествовать символу *.

  • Когда число * соответствует числу, то точка-дециал считается частью одного числа, но дециальная точка считается символом серого пространства и делимирует два числа.
  • Внутри "точных фраз" * рассматривается как символ серого пространства, а не символом дикой карты, поэтому он определяет слова.

Дикая карта \? представляет одну букву или номер; *\? также принимается, но \?* не признается.

Дикие карты предназначены для базовых поисковых запросов по словам, фразам и в исходных источниках, а также могут быть альтернативой (некоторым) продвинутым поисковым запросам по регекс (позже).

Добавление символа тильда ~ после слова или фразы активирует нечёткий поиск.

  • Для фразы это называется поиском «по близости», поскольку «близкие» слова допускаются к приблизительной, а не к «точной фразе».
  • Например, "exact one two phrase"~2 соответствует exact phrase.
  • Для слова это означает дополнительные символы или «измененные» символы.
  • Для фразы нечеткий поиск «требует» целого числа, указывающего, сколько дополнительных слов нужно вставить, но для слова нечеткий поиск может иметь десятичную дробь, «по умолчанию» word~0.5 (word~.5), где максимум две буквы могут быть переставлены, изменены или добавлены, но никогда первые две буквы.
  • Для фразы "близость" можно использовать большое количество, но это "дорогостоящий" (медленный) поиск.
  • Для слова word~2 наиболее нечетный с расстоянием редактирования 2 (по умолчанию), а $wordtild9 наименее нечетный, а $wordtillde12 не является нечетным вообще.
flowers algernon Flowers for Algernon flowers are for Algernon Flowers a1 2b 3c 4f 5j 6l 7j 8p q9 z10 for Algernon
"flowers algernon"    N  N  N
"flowers algernon"~0    N  N  N
"flowers algernon"~1      N  N
"flowers algernon"~2        N
"flowers algernon"~11        
"algernon flowers"~1  N  N  N  N
"algernon flowers"~2    N  N  N
"algernon flowers"~3      N  N
"algernon flowers"~4        N
"algernon flowers"~13        

Для значения близости, необходимого для соответствия в обратном (справа налево) порядке, считать и отбросить все дополнительные слова, а затем добавить вдвое общее количество оставшихся слов минус один. (Иными словами, добавьте вдвое больше сегментов). Для полного алгоритма близости см. Elasticsearch slop.

Кавычки предполагают точное соответствие запросу (то есть отключают дополнение по словоформам - т.н. «стемминг»); добавление тильды ("but appending"~) включает стемминг снова.

flowers flower Flowers for Algernon flower for Algernon
flowers         Голосование действует.
"flowers"    N    N Поиск близкости отключает отбор.
"flowers"~         Приблизительность плюс, исходящий от закрепления наклона.
"flowers for algernon"  N  N    N Поиск близкости отключает отбор.
"flowers for algernon"~  N  N     Приблизительность плюс, исходящий от закрепления наклона.
"flowers algernon"~1  N  N    N Поиск близкости отключает отбор.
"flowers algernon"~1~  N  N     Приблизительность плюс, исходящий от закрепления наклона.

Исходный код

1.24
Gerrit change 137733

Поиск в исходном коде может использоваться для поиска любого одного слова, отображенного на странице, но он создан для поиска любой фразы, которую вы можете найти - включая MediaWiki разметку (он же wikicode), на любой странице, кроме перенаправлений. Эта фраза полностью игнорирует серое пространство: insource: "state state autocollapse" соответствует |state={{{state|autocollapse}}}.

insource: word
insource: "word1 word2"
Ориентировочно игнорируются символы серого пространства, как и поиски слов и поиски точных фраз.
insource:/regexp/
insource:/regexp/i
Это регулярные выражения. Они неэффективны, поэтому в поисковом кластере разрешено использовать только несколько из них одновременно, но они очень эффективны. Регулярное выражение по умолчанию учитывает регистр; безразличие к регистру можно включить с помощью дополнительного i, что еще менее эффективно.

Включение дополняет себя. С одной стороны, он имеет полный текст поиска любого слова в викитексте, мгновенно. С другой стороны, он может обрабатывать поиск regexp для любой строки символов.[6] Регекс сканирует все текстовые символы в данном списке страниц; у них нет индекса слова, чтобы ускорить работу, и процесс прерывается, если он длится более двадцати секунд. Regexs работают в последнем месте в запросе, поэтому для ограничения ненужного сканирования на уровне символов, каждый запрос regex должен включать другие поисковые термины для ограничения количества документов, которые должны быть сканированы.[7] Часто лучшим кандидатом для добавления в запрос регулярного выражения insource:/arg/ является insource:arg, где arg — то же самое (и не использует подстановочные знаки).

Синтаксис для regexp - $source no space, а затем /regexp/. (Ни один другой параметр не допускает пространство. Все параметры, кроме insource:/regexp/, принимают пространство после их толстого толстого тела.)

Роли инд. и рег. эксп. похожи во многих отношениях:

  • Оба ищут только викитекст. * Ни один из них не находит вещи, «полученные» с помощью transclusion. * Ни один из них не находит синтаксические, нечеткие или близкие поиски. * Оба хотят получить наименьшее количество результатов, и оба работают быстрее, если сопровождаются другим предложением.

Однако индексированный поиск игнорирует серое пространство; поиск с использованием подстановочных знаков не соответствует серому пространству, поэтому регулярные выражения — единственный способ найти точную строку из «любых и всех» символов, например, последовательность из двух пробелов. Регекс - это совершенно другой класс инструментов поиска, которые делают сопоставление буквальной строки легким (основное, использование для начинающих), и делают возможным сопоставлять метахарактерные выражения (насовершенствованное использование) на вики. См. #Поиск с использованием регулярных выражений ниже.

Параметр insource обрабатывает слова со встроенными двоеточиями как одно слово. Это влияет на поисковые запросы для шаблонов, функций парсера, URL-адресов, вики-ссылок, HTML-тегов и комментариев.
По возможности избегайте запуска поиска с использованием чистого регулярного выражения. Посмотрите, как это всегда возможно, в #Поиск с использованием регулярного выражения ниже.
Чтобы искать слова, которые начинаются с - или !, например, -in-law или !Kung, используйте нечувствительный к делу запрос $source вместе с простым поиском на "простой" версии термина (для избежания голых поисков regexp). Например, $иссиньо или $искунг.

Префикс и пространство имён

Добавление термина пространства имен, например file: к поисковому запросу ограничивает результаты определенным пространством имен , вместо поиска по всей вики. По умолчанию пространство имен "Main".

Только одно имя пространства имен может быть установлено из запроса в поле поиска. Он должен быть «первым» термином в запросе или, если используется как часть термина prefix:, должен отображаться как «последний» термин в запросе.

Поиск по двум или более пространствам имен можно выполнять на панели «Дополнительно» панели поиска, расположенной в верхней части каждой страницы результатов поиска, Special:Search. Ваш поисковый домен, как профиль пространств имен, может быть установлен здесь. Список именных пространств будет представлен на первой странице будущих результатов поиска, чтобы указать область поиска результатов поиска. Чтобы отредактировать это, выберите дефолтный пространство имен (показано в скобках), выберите "Помните" и нажмите поиск.

Строка поиска графически устанавливает и указывает домен поиска. "Страницы контента" (mainspace), "Мультимедиа" (File), "Все" (all плюс File), "Переводы" и т. д. — это гиперссылки, которые могут активировать запрос в этом домене, а затем указать на это, став неактивными (темными). Но запрос переопределит строку поиска. Когда в запросе используется пространство имен или префикс, активации и указания в панели поиска могут быть вводящими в заблуждение, поэтому панель поиска и поле поиска являются взаимовыключающими (не дополняющими) способами настройки домена поиска.

Термин namespace перевешивает строку поиска, а термин prefix: перевешивается namespace.

Чтобы указать имя пространства имен, добавьте к нему двоеточие, например, talk:. Используйте all: для поиска по «всем» пространствам имен или «:» (одно двоеточие) для поиска только по основному пространству имен статьи.

Термин all: не включает в себя файл: namespace, который включает медиаконтент, хранящийся на Commons, например PDF, который все индексируется и подходит для поиска. Когда файл включен, модификатор namespace local: имеет эффект, иначе он игнорируется.

Как и при параметрах поиска, local: и all: должны быть малыми буквами. Пространства имён регистронезависимы.

Псевдонимы пространства имен принимаются.

talk: "Wind clock" Найдите страницы в пространстве имен Talk, заголовок или текст которых содержит фразу «wind clock».
file: "Wind clock" Найдите страницы в пространстве имен «Файл», заголовок, текст или медиаконтент которых содержит фразу «wind clock».
file: local: "Wind clock" Вычистить результаты из Википрограммы Commons.
local: "Wind clock" Не обращали внимания. Проверяет основную площадь. Местное место игнорируется, если не вовлечен файл.

prefix:

Параметр prefix: совпадает с любым количеством первых символов всех имен страниц в одном пространстве имен.[8] Когда первые буквы совпадают с именем пространства и колонной, поисковая домена меняется.

Given a namespace only, prefix: will match all its pagenames. Given one character only, it cannot be - (dash), ' (quote), or " (double quote). The last character cannot be a colon.

Для соответствующих имен страниц, их заголовки подстраниц соответствуют по определению.

Параметр prefix: не позволяет пространство перед пространством имен, но позволяет белое пространство перед именем страницы. Этот термин всегда идет в конце, поэтому символы имени страницы могут содержать кавычки (").

prefix:cow Найти страницы в основном пространстве, название которых начинается с трех букв c o w.
domestic   prefix:cow Найдите страницы в масс-пространстве, название которых начинается с трех букв c o w, и которые содержат слово "domestic".
domestic   prefix:cow/ Перечислите все существующие подстраницы Cow, но только если они содержат слово "domestic". Это очень распространенный поиск и часто создается с использованием специального параметра URL под названием prefix=.
domestic   prefix:Talk:cow/ List any subpages of Talk:cow, but only if they contain the word "domestic".
1967   prefix:Pink Floyd/ Перечислите все подстраницы «Pink Floyd», но только если они также содержат слово «1967».

Расширение Translate создает своего рода «языковое пространство имен» переведенных версий страницы. Однако, в отличие от пространства имен или префикса, которые создают начальный домен поиска, параметр inlanguage является его «фильтром». (См. следующий раздел.)

Исключение материалов из поискового индекса

Содержание может быть исключено из индекса поиска, добавив $css-класс. Это даст указание CirrusSearch игнорировать этот контент из индекса поиска (см. задача T162905 для более подробного контекста).

Кроме того, содержание может быть отмечено как вспомогательная информация, добавив $css-класс. Это даст CirrusSearch указание переместить контент из основного текста в вспомогательное поле, которое имеет меньшее значение для поиска и выделения подчеркновения. Это различение используется для таких элементов, как описание миниатюра изображения, разделы "см. также" и т.д.

Фильтры

Фильтр будет иметь несколько инстанций или отрицательные инстанции, или он может работать как самостоятельный фильтр поисковой домены. Запрос формируется как термины, которые фильтруют поисковую домену.

Добавление другого слова, фразы или параметра фильтрует больше. Высокоусовершенствованный результат поиска может иметь очень много фильтров Y/N, когда будет адресовано каждая страница в результатах поиска. (В этом случае рейтинг в значительной степени не имеет значения.) Фильтрация имеет решающее значение для добавления термина regex; вы хотите как можно меньше страниц перед добавлением regex (потому что он никогда не может иметь подготовленный индекс для поиска).

Наменное пространство - это определенное поисковое доменное пространства, но не фильтр, потому что пространство имен не будет работать самостоятельно. «Префикс» будет отрицательным, поэтому это фильтр. Параметры поиска ниже - это фильтры, для которых могут быть несколько примеров.

Insource (описано выше) также является фильтром, но insource:/regexp/ не является фильтром. Фильтры и все другие параметры поиска указываются в нижнем регистре. (Исключением являются пространства имен, которые нечувствительны к регистру.)

«Intitle» и «incategory»

Поиск слов и фраз совпадает в заголовке и совпадает в поле категории внизу страницы. Но с этими параметрами вы можете выбрать заголовки только или категорию только.

  • cow*
    • Найти статьи, название или текст которых содержат слова, начинающиеся с cow
  • intitle:foo
    • Наизучите статьи, название которых содержит фу. Голосование включено для foo.
  • intitle:"fine line"
    • Найти статьи, заголовок которых содержит тонкая грань. Стемминг отключен.
  • intitle:foo bar
    • Найти статьи, название которых содержит фу и название или текст которых содержат строку.
  • -intitle:foo bar
    • Находит статьи с заголовком, который не содержит "foo" и "bar".
  • incategory:Music
    • Найдите статьи, которые входят в Категории:Музыка
  • incategory:"music history"
    • Найти статьи, которые входят в Категории:Музыка_история
  • incategory:"musicals" incategory:"1920"
    • Найти статьи, которые входят в категорию:Музыкальные и категории:1920
  • -incategory:"musicals" incategory:"1920"
    • Найти статьи, которые не входят в Категории:Музыкальные произведения, но в Категории:1920

Intitle и incategory — старые параметры поиска. Incategory больше не ищет подкатегорию автоматически, но теперь вы можете вручную добавлять несколько названий страниц категорий.

1.31
Gerrit change 413896

Поскольку MediaWiki 1.31-wmf.23 Регулярные поиски выражений поддерживаются для заголовка:

intitle:/regex/, intitle:/regex/i

Все, что написано в #Поиски с регулярными выражениями, также действительно для этих поисков, включая предупреждения.

По возможности избегайте запуска поиска с использованием чистого регулярного выражения. Посмотрите, как это всегда возможно, в #Поиск с использованием регулярного выражения ниже.

Deepcategory

Глубокий поиск по категориям позволяет выполнять поиск по категориям и всем подкатегориям. Глубина дерева в настоящее время ограничена 5 уровнями (настраивается), а количество категорий ограничено 256 (настраивается). Глубокий поиск использует SPARQL Category service от WDQS. Ключевые слова — deepcategory или deepcat. Пример:

  • deepcat:"musicals"
    • Найти статьи, которые входят в Категории:Музыкальные или любой из подкатегорий.

Гаджет DeepCat, который ранее реализовал этот параметр, был заложен в январе 2020 года.

Ссылки на …

Linksto находит викиссылки на заданное имя, а не ссылки на контент. Входные данные — каноническое, чувствительное к регистру, имя страницы. Оно должно точно соответствовать строке заголовка страницы контента, до любых изменений регистра в заголовке. (Оно должно соответствовать его { {FULLPAGENAME}}, например Help:CirrusSearch/ru.)

Linksto не находит перенаправления. Он находит только [ [wikilinks]], даже если они созданы по шаблону. Он не находит ссылку, сделанную URL, даже если этот URL является внутренней ссылкой на вики.

Чтобы найти все викиссылки на "Help:Cirrus Search", если "Help:Searching" и "H:S" перенаправляют к нему:

  1. linksto: "Help:Cirrus Search"
  2. linksto: Help:Searching
  3. linksto: H:S

$linkto находит статьи, которые упоминают "CirrusSearch" но не в викиссылке.

Ускорение

Вы можете указать использование шаблона с помощью hastemplate: template. Введите каноническое имя страницы, чтобы найти «все использования» шаблона, но использование любого из его имен страниц перенаправления найдет «только это наименование». Псевдонимы пространства имен принимаются, регистр букв полностью игнорируется, и перенаправления находятся, все в одном поиске имени. (Сравните boost-template без пространства имен по умолчанию; linksto без псевдонимов пространства имен, с учетом регистра, без перенаправлений; intitle без перенаправлений.)

Hastemplate находит вторичное (или меташаблонное) использование на странице: он ищет включение после расширения. Это та же философия, что и для слов и фраз из шаблона, но здесь это для шаблонов из шаблона. Страница будет указана как имеющая этот контент, даже если этот контент не виден в викитексте.

  • hastemplate: "quality image", находит использование "Template:Quality image" в вашем домене поиска по умолчанию (намеровые пространства).
  • hastemplate: portal:contents/tocnavbar, находит использование основного пространства шаблона "Contents/TOCnavbar" в пространстве имен портала.

Для установок с расширением Translate поиск hastemplate получает помехи везде, где Template:Translatable template name оборачивает имя шаблона переводимого шаблона. Вместо этого используйте insource.

Язык

Для установки с расширением Translate, inlanguage важен для высокоусовершенствованных поисков и количества страниц.

inlanguage: код языка

будет давать результаты поиска только на этом языке.

Например

  • чтобы подсчитать все японские страницы на вики
all: inlanguage: ja
  • для фильтрации немецких и испанских страниц в пространстве имен помощи
help: -inlanguage: de -inlanguage: es
  • для игнорирования перевода, а где английский язык является базовым языком, добавьте
inlanguage:en

Contentmodel

Ключевое слово contentmodel: позволяет ограничить поиск страницами определенной модели контента. Возможные модели см. в Content handlers. Например:

  • Чтобы увидеть только страницы JSON:
contentmodel:json

Подстраницы

Чтобы найти подстраницы.

subpageof: Родительская страница

Например

  • Чтобы найти все подстраницы CirrusSearch.
subpageof:CirrusSearch
  • Используйте двойные цитаты, если на странице-основе есть пробелы.
subpageof:"Requests for comment"
В отличие от prefix:, не включайте пространство имен страницы в значение ключевого слова. Если вы хотите ограничить подстраницы определенного пространства имен, используйте фильтр пространства имен.

Articletopic

Ключевое слово articletopic: позволяет фильтровать результаты поиска по темам. По возможном темам см. Help:CirrusSearch/articletopic . Например, articletopic:books фильтрует результаты поиска на статьи о книгах. articletopic:books|films будет фильтровать статьи о книгах или фильмах. articletopic:books articletopic:films будет фильтровать статьи о книгах или фильмах.

Только статьи в основном пространстве относятся к темам, и темы доступны только на Википедии. В отличие от других фильтров, статья-точка также делает вес страницы: статьи, которые более подходят для темы, будут выше в результатах поиска (в то время как статьи, которые не касаются этой темы вообще, будут полностью удалены из набора результатов).

Тематические модели получены с помощью машинного обучения от ORES. Каждая статья получает баллы по десяткам различных тем, и поэтому может появляться под разными ключевыми словами. Например, статья об Альберте Эйнштейне может выглядеть как статья "физика" и статья "биография". Все Википедии имеют доступные оценки - некоторые имеют тематические модели на местном языке, которые охватывают все статьи. Другие языки не имеют локальных моделей ORES, и используют оценки на английском языке, присвоенные статьям на местном языке, которые также существуют в английской Википедии. Языки с такими "кросс-вики" не имеют 100% охвата - в зависимости от языка, это может быть только около 60% статей, которые имеют доступные темы.

Данные по поиску, связанные с темой, обновляются еженедельно, поэтому недавно созданные статьи могут не появляться в поисковых запросах на основе темы.

Pageid

Ключевое слово pageid: ограничивает результаты поиска данным набором идентификаторов страниц. Это не очень полезно для ручного поиска; это может быть использовано программными инструментами для проверки соответствия набора страниц данному набору условий поиска (например, для повторной проверки результатов кеша).

Вес страниц

Взвешивание определяет скетп, предложения и релевантность страницы. Нормальный вес - один. Дополнительное весовое измерение дается через множества.

Если запрос состоит только из слов, страницы, которые соответствуют им по порядку, получают повышение. Если вы добавляете какие-либо явные фразы в свой поиск или для некоторых других дополнений, эта функция "предпочитаемой фразы" не применяется.

Больше похоже

  • morelike:page name 1|page name 2|...|page name n
    • Ищет статьи, текст которых содержит слова, похожие на текст заданных статей.
  • morelike:wasp|bee|ant
    • Найдите статьи о укусающих насекомых.
  • morelike:template:search|template:regex|template:usage
    • Найти шаблоны о regex поиска использования шаблона на вики.

morelike - это ключевое слово "желательно", что означает, что оно не может быть сочетано с другими поисковыми запросами. Если вы хотите использовать другие поисковые запросы, используйте morelikethis в вашем поиске:

  • morelikethis:bee hastemplate:"featured article"
    • Найдите статьи о bees, которые также имеют шаблон "featured article".

morelike: запрос работает путем выбора набора слов в вводящих статьях и запускать запрос с выбранными словами. Вы можете настроить его работу, добавив следующие параметры в URL результатов поиска:

  • cirrusMltMinDocFreq: Минимальное количество документов (на фрагмент), требующих определения срока для рассмотрения.
  • cirrusMltMaxDocFreq: Минимальное количество документов (на фрагмент), требующих определения срока для рассмотрения.
  • cirrusMltMaxQueryTerms: Максимальное количество условий, которые должны быть рассмотрены.
  • cirrusMltMinTermFreq: Минимальное количество раз, когда термин появляется в вводе к документу, который должен быть рассмотрен. Для небольших полей ($ заголовок) это значение должно быть 1.
  • cirrusMltMinWordLength: Минимальная продолжительность срока, который должен быть рассмотрен. По умолчанию до 0.
  • cirrusMltMaxWordLength: Максимальная длина слова, над которой слова будут проигнорированы. По умолчанию до неограниченного (0).
  • cirrusMltFields (перечень значений, разделенный с точки зрения сделок): Это поля, которые следует использовать. Допускаемые поля - title, text, auxiliary_text, opening_text, headings и all.
  • cirrusMltUseFields (truefalse): используйте только полевые данные. По умолчанию false: система будет извлекать содержание поля text для создания запроса.
  • cirrusMltPercentTermsToMatch: Процент условий, на которых можно совпасть. По умолчанию до 0,3 (30 процентов).
  • Пример:
    &cirrusMtlUseFields=yes&cirrusMltFields=title&cirrusMltMinTermFreq=1&cirrusMltMinDocFreq=1&cirrusMltMinWordLength=2
    
    Эти настройки можно сделать постоянными, переопределив cirrussearch-morelikethis-settings в Системное сообщение.

Prefer-recent

Добавление prefer-recent: в любом месте в запросе дает недавно редактированным статьям немного больше, чем обычно, повышение правил ранжирования страниц. Prefer-recent применяется только при использовании порядка сортировки по умолчанию relevance sort order.

Он по умолчанию увеличивает только 60% отсчета, в большом, 160-дневном окне времени, которое можно ввести в запрос как prefer-recent:0.6,160. Это хорошо сочетается с другими правилами ранжирования страниц и предназначено для большинства поисковых запросов.

Вы можете манипулировать правилами: prefer-recent:boost,recent Технически "повышение" - это соотношение счёта к шкале, а "новейшее" - это полужизнь в день. Увеличение больше, чем обычный «множитель», это «экспоненциальное» увеличение. Фактор, используемый в экспоненте, - это время с последнего редактирования.

Например

prefer-recent:,7

Страницы старше 7 дней повышаются вдвое, а страницы старше 14 дней повышаются еще вдвое и т. д. Для простой "по дате сортировки" в высокоусовершенствованных результатах поиска, где рейтинг страниц и повышение значимость в значительной степени бессмысленны, просто повысить весь результат.

  • prefer-recent:1,7 - недель
  • prefer-recent:1,1 - дни
  • prefer-recent:1,0.0007 - мин.
  • prefer-recent:1,0.0001 - 8,64 секунды
  • prefer-recent:1,0.00001 - секунды

Шаблоны

Можно увеличить поисковую оценку страниц в зависимости от того, какие шаблоны они содержат. Это можно сделать прямо в поисковом запросе при помощи boost-templates:"" или установив умолчание для всех запросов через сообщение MediaWiki:Cirrussearch-boost-templates. boost-templates заменяет содержимое cirrussearch-boost-templates, если оно было указано. Синтаксис слегка специфический, но выбран для наглядности.

Вы можете повысить поисковый рейтинг страниц в зависимости от того, какие шаблоны они содержат. Это можно применить ко всем поисковым запросам, объявив повышение с помощью MediaWiki:Cirrussearch-boost-templates, или вручную, в отдельных запросах с помощью оператора boost-templates:"". Если в запросе задан оператор boost-templates, то содержимое cirrussearch-boost-templates игнорируется. Подобно функции preference-recent, boost-templates применяется как часть порядка сортировки по умолчанию relevance sort order. Он не влияет на другие порядки поиска.

Синтаксис сообщения следующий:

  • Everything from a # character to the end of the line is considered a comment, and ignored.
  • Каждая непустая линия интерпретируется как точное название шаблона, который должен получить подъем (включая префикс namespace), за которым следует символ "|" пип, за которым следует номер, за которым должен последовать символ " %".

Некоторые примеры:

 Template:Important|150%
 Template:Very_Very_Important|300%
 Template:Less_important|50%

Некоторые примеры:

 Template:Foo|150.234234% # не допускаются десятичные точки.
 Foo|150% # технически действительный, но действует на преобразованиях Foo (главная космическая статья) вместо шаблона:Foo.

Некоторые примеры:

boost-templates:"Template:Quality_Image|200%" incategory:china
Ищет файлы в категории "Китай", сортируя качественные изображения в начало.
boost-templates:"Template:Quality_Image|200% Template:Low_Quality|50%" incategory:china
Ищет файлы в категории "Китай", сортируя высококачественные изображения в начало, а низкокачественные - в конец.
boost-templates:"Template:Quality_Image|200% Template:Low_Quality|50%" popcorn
Найти файлы о попкорне, сортировать качественные изображения первыми и низкокачественные изображение последними. Помните, что с помощью сообщения cirrussearch-boost-templates это может быть сведено к popcorn.

Десятичные точки в процентных значениях не допускаются. Поисковый рейтинг страниц формируется таким образом, что доли процента вряд ли будут иметь значение.

Будьте осторожны, если добавить очень низкие или очень высокие проценты через cirrussearch-boost-templates, они могут отравить полный текст. Например, если Википедия увеличит шаблон "Отмечаемая статья" на 1 миллион процентов, то поиски любого термина, упомянутого в отмечаемых статьях, будут занимать место выше даже статьи, посвященной этому термину.

Соответствие фразам также будет нарушено, поэтому поиск по запросу brave new world вернет избранную статью в качестве первого результата, даже если в ней упоминаются только эти три слова, а не более релевантную статью о самом О дивный новый мир.

Регулярные выражения для поиска

  Внимание: Do not run a bare insource:/regexp/ search. It will probably timeout after 20 seconds anyway, while blocking the queries of responsible users.

Базовый поиск по индексу находит "слово", отображаемое на странице. Дефисы, знаки препинания, кавычки, слэши и другие математические и вычислительные символы - лишь границы "слов". Их нельзя использовать при поиске по индексу. В основном, поисковое поведение желается пользователем. Однако иногда хочется иметь возможность более точного поиска.

Для обострения синтаксической недостаточности поисковых запросов на основе индекса можно использовать поисковые запросы regexp. Но поскольку запросы с только регсп-выражениями очень медленны и потребляют ресурсы, они всегда должны быть объединены с поиском на основе индекса, таким образом, что поисковый домен регсp ограничивается результатами одного или нескольких поисков на основе индексов.

Поиск "точного строка" regexp - это базовый поиск; он просто "цитирует" весь regexp, или "защитный ответ" - все неальфанумерические символы строки. Все поиски regexp также требуют разработки пользователем простого фильтра для создания поисковой домены для поисковой системы regex (поисковой домений на основе индекса, отмеченный вживую, часть regexp, отмеченная в укрытии):

  • 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}}

Последний пример работает с ссылки на странице, но {{FULLPAGENAME}} не работает в поле поиска.

Например: [[Special:Search/insource:/regex/ prefix:{{FULLPAGENAME}}]] находит термин regex на этой странице.

Запрос без указанного пространства имен и префикса ищет ваш домен поиска по умолчанию (можно задать на любой странице результатов поиска, например, в Special:Search). Некоторые пользователи оставляют свой домен поиска по умолчанию на "всех пространствах имен", например, во всей вики. Если этот пользователь на большой вики выполнит поиск по чистому регулярному выражению, он, вероятно, не будет выполнен, вызвав тайм-аут, прежде чем поиск будет завершен.

Regex поиск обыскает каждую страницу в поисковом домене по знаку. Напротив, индексированный поиск на самом деле запрашивает несколько записей из базы данных, отдельно от базы данных вики, и дает почти мгновенные результаты. Поэтому при использовании insource:// (regexp любого рода), подумайте о добавлении других поисковых терминов, которые будут ограничивать домен поиска regex, насколько это возможно. Есть много поисковых терминов, которые используют индекс и поэтому мгновенно предоставляют более утонченный поисковый домен для /regexp/. В порядке общей эффективности:

  • insource:"" с кавычками, дублирующими регулярное выражение, за исключением без слешей или экранированных символов, это идеальный вариант.
  • intitle (без поиска по регулярным выражениям), incategory и linksto — отличные фильтры.
  • hastemplate: — очень хороший фильтр.
  • «слово1 слово2 слово3», с кавычками или без них, являются допустимыми.
  • namespace: практически бесполезен, но может позволить завершить медленный поиск регулярных выражений.

Чтобы протестировать простой запрос регулярного выражения, вы можете создать страницу с тестовыми шаблонами, а затем использовать параметр prefix с этим полным именем страницы. Матч будет подчеркнут. Он ищет эту страницу (в базе данных) и ее подстраницы.

Поисковые термины, которые не повышают эффективность поиска с использованием регулярных выражений, — это операторы оценки страниц: «morelike», «boost-template» и «prefer-recent».

Мета-символы

В этом разделе рассматривается, как избежать метахарактеров, используемых в поисковых системах regexp. Для фактического значения метахарактеров см. объяснение синтаксиса.[9]

Использование точной строки требует регулярного выражения, но термин регулярного выражения обязывает поиск ограничивать себя. «Добавляйте» термин регулярного выражения, никогда не ищите простое регулярное выражение. «Начните» с указания количества страниц в предыдущем поиске, прежде чем совершать поиск точной строки. Запрос с точной строкой требует отфильтрованного домена поиска.

Например:

  • для поиска пространства имен, измерять количество страниц с одним термином, который является пространством имен. Здесь будет перечислено количество страниц в этом пространстве имен.
  • начинать поиск того, что вы видели, например "wiki-link" или " (trans[in]clusion) " начинается с namespace и инсорс фильтров.

Есть некоторые заметные различия в стандартных метахарактерах regex:

  • \n или \r\n не предназначены для совпадения с новой строкой. Чтобы искать строку, которая содержит новую строку, вы можете сделать поиск insource:/[^\}]\}\}[^\} \|]{2}\<noinclude/i что означает не закрученную скобку, затем две закрученные скобки, затем любые два символа, кроме закрученной скобки или трубы, затем тег ‎<noinclude>. "Каждый персонаж, кроме" будет включать в себя новую строку в поиске. Обратите внимание, что поиск был разработан только для соответствия следующей строке:
}}

<noinclude>
  • Метахарактер точка . означает любое символочное значение, включая новую строку, поэтому .* соответствует по линиям.
  • Знак номер # означает что-то, и должен быть избегнут.[10]
  • ^ и $ не реализуются. Как "grep" (глобальный на строку, регулярный выражение, печать каждую строку), каждый insource:// является "глобальный за документ, регулярное выражение, поисковые результаты-список каждый документ" на документ.
  • < и > поддерживают многозначный цифрный диапазон, как [0-9] делает, но без учета количества позиций символов или диапазона в каждой позиции, так что <9-10> работает, и даже <1-111> работает.

Замены некоторых метасимволов

Хотя классы символов \n, \s, \S не поддерживаются, в случае острой необходимости использовать их в обычном выражении, вы можете использовать следующие решения:

PCRE CirrusSearch Описание
\n [^ -􏿿] Перевод строки (также можно встретить символ табуляции)[11]
[^\n] [ -􏿿] Любой символ, кроме новой строки и табуляции
\s [^!-􏿿] Пробельные символы: пробел, новая строка или табуляция
\S [!-􏿿] Любой символ, кроме пробела

В этих диапазонах « » (пробел) — это символ, следующий сразу за управляющими символами, «!» — это символ, следующий сразу за пробелом, а «􏿿» — это U+10FFFF, последний символ в Unicode. Таким образом, диапазон от " " до "􏿿" включает все символы, кроме контрольных символов (из которых статьи могут содержать новые линии и таблицы), в то время как диапазон с "!" до "$ 3" включает все знаки, кроме контрольного символа и пространства.

Уточнение с точной строкой

  • уточнение текущего процесса поиска с помощью того, что вы хотите видеть, например, «2 + 2 = 4» или «site.org». В идеале это наилучшее использование регулярных выражений, поскольку оно добавляет его как один термин регулярного выражения при уточнении поиска, можно увидеть ограниченное количество страниц, которые должно сканировать регулярное выражение.

Начнём с точного поиска строк, но помните:

  • Regex обыскивает только викитекст, а не реендерированный текст, поэтому есть некоторые различия вокруг разметки, и даже количество пространственных символов должно соответствовать точно.
  • Вы обязаны предоставить сопроводительный фильтр.
  • Вы должны научиться избегать метахарактеров.

Есть два способа избежать метахарактеров. Они оба полезны иногда, и иногда соединены бок о бок в побеге от струны.

  • Экранирование одной из них \char обратной косой чертой. Insource:/regexp/ использует косые черты для разделения регулярного выражения. Указание /reg/exp/ неоднозначно, поэтому вы должны написать /reg\/exp/.
  • Поместите строку из них в двойные кавычки "string". Поскольку экранирование символа не повредит, вы можете экранировать любой символ вместе с любыми возможными метасимволами в нем. Экранирование с помощью кавычек чище.
  • Нельзя смешивать методы, но можно их соединять.

Экранирование двойных кавычек с помощью insource:/"regexp"/ — это простой способ поиска многих типов строк, но вы не сможете экранировать обратным слешем что-либо внутри экранирования в двойных кавычках.

  • /"[[page/name|{{temp-late"/ instead of /\[\[page\/name\|\{\{temp\-late/
  • /"literal back\slash"/ так же хорошо , как /literal back\\slash/
  • But /"This \" fails"/ always.
  • И $ это зависит. Он буквально находит \/, что не тот /, который вы, вероятно, хотели.

Экранирование обратной косой черты с использованием insource:/regexp/ позволяет экранировать разделители " и /, но требует учета метасимволов и экранирования любых:

  • Чтобы сопоставить с / делимитерный знак используйте \/.
  • Для совпадения с символом делитери " используйте \".
  • Убежавшие метахароктары будут \~\@\#\&\*\(\)\-\+\{\}\[\]\|\<\>\?\.\\.
  • Эквивалентный выражение, избежавший двойных котировок, - "~@#&*()-+{}[]|\<>?.\".

Простейший алгоритм создания базового выражения для поиска строки с использованием insource:/"regexp"/ не требует учета метасимволов, за исключением символов " и /:

  1. Напиши the/str"ing. (/"Ограничители"/ не указаны.)
  2. Заменить " с "\"" (предыдущий двойной цитата: остановка, конкаценат, перезапуск цитаты).
  3. Заменить / на "\/" (стоп, конкатенат, старт).

Вы получите $с источником, показывающее конкаценацию двух методов.

При уточнении regexp на странице результатов поиска, имейте в виду, что фрагмент "wikitext" изменил расстояние. Регекс чувствительны к космическим персонажам, поэтому копирование из фрагментов опасно.

Нотация квадратных скобок для создания собственного класса символов also экранирует метасимволы its. Чтобы указать на буквальную правую квадратную скобку в шаблоне класса символов, ее необходимо экранировать обратной косой чертой, в противном случае ее можно интерпретировать как закрывающий разделитель определения шаблона класса символов. The first position of a character class will also escape the right square bracket. Inside the delimiting square brackets of a character class, the dash character also has special meaning (range) but it too can be included literally in the class the same way as the right square bracket can. For example both of these patterns target a character that is either a dash or a right square bracket or a dot: [-.\]] or [].\-].

For general examples using metacharacters:

  • insource:"2+2=4" insource:/"2+2=4"/ matches "2 + 2 = 4", with zero spaces between the characters.
  • insource:"2 + 2 = 4" insource:/2 ?\+ ?2 ?= ?4\./ match with zero or one space in between. The equals = sign is not a metacharacter, but the plus + sign is.
  • insource:"<tag>[[link|2\3?]]\</tag>" insource:/"<tag>[[link|2\3?]]<"\/"tag>"/

Регулярные выражения для заголовков

The insource keyword does only search the page source content. To run regex searches on the title strings intitle:/regex/ can be used.

Advanced example

For example, using metacharacters to find the usage of a template called Val having, inside the template call, an unnamed parameter containing a possibly signed, three to four digit number, possibly surrounded by space characters, and on the same page, inside a template Val call, a named argument fmt=commas having any allowable spaces around it, (it could be the same template call, or a separate one):

hastemplate:val insource:"fmt commas" insource:/\{\{ *[Vv]al *\|[^}]*fmt *= *commas/ insource:/\{\{ *[Vv]al *\|[^}]*[-+]?[0-9]{3,4} *[|}]/

Note that the = sign in "fmt commas" is not needed but that adding it would not change the search results. It is fast because it uses two filters so that every page the regexp crawls has the highest possible potential.

Гео-поиск

Searching based on the (primary) coordinates associated with pages. Зависит от Расширение:GeoData и {{#coordinates:}}

bounded

You can limit search to pages identified as being near some specified geographic coordinates. The coordinates can either be specified as a <lat>,<lon> pair, or by providing a page title from which to source the coordinates. A distance to limit the search to can be prepended if desired. Примеры:

  • neartitle:"San Francisco"
  • neartitle:"100km,San Francisco"
  • nearcoord:37.776,-122.39
  • nearcoord:42km,37.776,-122.39


boosted

You can alternatively increase the score of pages within a specified geographic area. The syntax is the same as bounded search, but with boost- prepended to the keyword. This effectively doubles the score for pages within the search range, giving a better chance for nearby search results to be near the top.

  • boost-neartitle:"San Francisco"
  • boost-neartitle:"100km,San Francisco"
  • boost-nearcoord:37.776,-122.39
  • boost-nearcoord:42km,37.776,-122.39


Поиск свойств файлов

1.28
Gerrit change 311061

Since MediaWiki 1.28, CirrusSearch supports indexing and searching of properties of files in the File: namespace. This includes:

  • file media type
  • MIME type
  • size
  • width & height
  • resolution
  • bit depth for files that support these
While these predicates are useful only for files, they by themselves do not limit search to the File: namespace. It is recommended to include this namespace in a search or restrict the search to only this namespace when using these conditionals.

Тип файла (filetype)

Searching for file type allows to retrieve files according to their classification, such as office documents, videos, raster images, vector images, etc. The following types currently exist:

  • UNKNOWN
  • BITMAP
  • DRAWING
  • AUDIO
  • VIDEO
  • MULTIMEDIA
  • OFFICE
  • TEXT
  • EXECUTABLE
  • ARCHIVE

This list may be extended in the future. See also MEDIATYPE_* constants in Defines.php.

The syntax of the search is: filetype:{type}. Example:

filetype:video - ищет во всех видео

The filetype search is not case-sensitive.

filemime

Matches file MIME type. The syntax is:

filemime:{MIMEtype} - look for files of this MIME type

The argument can be quoted to specify exact match. Without quotes, partial matches to components of MIME type will be accepted too.

Примеры:

  • filemime:"image/png" - look for files with MIME type exactly image/png
  • filemime:pdf - look for all PDF documents
  • -filemime:pdf - skip all PDF documents (notably on Commons)

The MIME type search is not case-sensitive.

filesize

Search for file of given size, in kilobytes (kilobyte means 1024 bytes). The syntax is:

  • filesize:{number} или filesize:>{number} - file with size at least given number
  • filesize:<{number} - file with size no more than given number
  • filesize:{number},{number} - file with size between given numbers

Примеры:

  • filesize:>20 или filesize:20 - files 20KB and bigger
  • filesize:<1024 - файлы меньше, чем 1МБ
  • filesize:100,500 - files with sizes between 100KB and 500KB

Параметры файлов

It is possible to search for specific file measures: width, height, resolution (which is defined as square root of height × width), and bit depth. Not all files may have these properties. The syntax is:

  • {measure}:{number} - file with measure that equals to given number
  • {measure}:>{number} - file with measure that is at least given number
  • {measure}:<{number} - file with measure that is no more than given number
  • {measure}:{number},{number} - file with measure that is between given numbers

Where measure can be:

filew или filewidth - ширина файла

fileh or fileheight - file height

fileres - file resolution (see above)

filebits - file bit depth

Примеры:

filew:>800 fileh:>600 - files that are at least 800×600 pixels in size

filebits:16 - files with 16-bit color depth

fileheight:100,500 - file between 100 and 500 pixels high

The Wikibase extension defines some search keywords in order to make it easier to search for certain Wikibase items. This is useful on Wikidata and other Wikibase sites, including to search for images with Structured data on Wikimedia Commons . See Help:WikibaseCirrusSearch for details.

Результаты поиска в других вики-проектах («кросс-вики»)

There are two kinds of cross-wiki results that may be shown when searching on Wikipedia.

Cross-project search (also known as interwiki search, sister search, or sister projects search) shows additional results from other projects (Wiktionary, Wikisource, Wikiquote, etc.) shown to the side on the Wikipedia results page. Cross-project search is available on most Wikipedias with sister projects.

Cross-language search (see blog post) refers to additional results shown below the main results that are from a Wikipedia in a different language. Cross-language search uses a heavily modified and optimized version of a light-weight language detector called TextCat . Cross-language search is currently only available on a few Wikipedias (see TextCat link for details).

Explicit sort orders

In addition to the default relevance based sort, CirrusSearch can provide results using a few other explicit sort orders. Specifying a sorting order other than relevance will disable all search keywords that affect scoring, such as prefer-recent or boost-templates. The keywords will still be parsed, but they will have no effect.

Sorting options are currently available from the MediaWiki API by providing the srsort parameter.

Guidance:

Sorting options can be manually added to a search URL by adding &sort=order, for example:

Valid sort orders include:

URL supplement Описание
&sort=incoming_links_asc Lowest to highest number of incoming links. This is approximately from least to most popular.
&sort=incoming_links_desc Highest to lowest number of incoming links. This is approximately from most to least popular.
&sort=last_edit_asc From least recently to most recently edited
&sort=last_edit_desc From most to least recently edited
&sort=create_timestamp_asc From least to most recently created
&sort=create_timestamp_desc From most to least recently created
&sort=just_match A simple relevance sort based only on text matching
&sort=relevance A relevance sort taking into account many features of the document
&sort=random Randomized
&sort=none Unsorted, arbitrarily ordered lists. Preferred for large result sets.

Interface for advanced options

 
Advanced Search Interface

The AdvancedSearch extension adds an improved interface to the search page allowing the use of several options described above in a user-friendly manner. See here for the user manual.

См. также

Внешние ссылки

Примечания и комментарии

  1. Обратите внимание, что подзаголовок не является частью реального содержимого. Чтобы произвести поиск по содержимому странице, добавьте ?action=cirrusdump к URL.
  2. В CirrusSearch редко требуются слова "стоп", за исключением случаев, когда они содержатся в определенных типах фраз, как объясняется ниже.
  3. Параметры поиска Cirrus не используют последовательный способ обработки этих поисковых терминов.
  4. https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html Тот же аналитик, который используется для индексации викитекста, также используется для интерпретации запроса.
  5. Например, общие термины на этой вики, MediaWiki.org, являются, излишне, (поиск):
    • udp2log или udp2log2 (хотя дополнительные 2 повлияют на рейтинг) * html2wt или wt2html * log2ip или ip2log Есть test2wiki, wiki2xml, wiki2dict, apache2handler, apache2ctl и т. д.
  6. CirrusSearch regex не обращается к символу новой строки напрямую, но точка . будет соответствовать новой строке.
  7. Медленный поиск regex не может отключить поиск, но может отключать поиск regEx другого, поскольку в одном случае разрешено только ограниченное количество поисков regex.
  8. Префикс не совпадает с первыми символами полных имен страниц, поэтому вы не можете выполнять поиск в двух пространствах имен одновременно только потому, что они начинаются с одинаковых букв, например, «namespace» и «namespace talk» в одном запросе.
  9. Для формального определения см. Lucene грамматика для регулярных выражений.
  10. Class RegExp, синтаксис Lucene RegExp
  11. Чтобы исключить также символ табуляции, скопируйте его и добавьте его к набору символов.