Как работает функция "редактировать раздел" в Википедии?


Как Википедия реализует функцию "редактировать этот раздел" для своих статей, в которой пользователь может редактировать только часть статьи, а не всю статью целиком? Я пытался самостоятельно пробраться через код mediawiki, но для меня это немного сложно понять. Вот мое предположение (но только предположение):

Пользователь нажимает на [редактировать] в статье. Это ссылка на обычную страницу редактирования, но с дополнительным параметром, переданным через GET в URL, указывающим, какой раздел редактировать. Без этого дополнительного параметра Mediawiki обычно просто предоставлял бы пользователю форму для редактирования всей страницы. Но указание раздела для редактирования приводит к тому, что Mediawiki извлекает ТОЛЬКО этот раздел и представляет его для редактирования.

Что меня озадачивает, так это то, как Mediawiki анализирует отдельные разделы? Из того, что я понимаю, MW не хранит разделы по отдельности - он хранит каждую ПОЛНУЮ ВЕРСИЮ каждой версии страницы в виде одного большого блока текста (в дополнение к множеству метаданные). MW просто ищет теги H1, H2, H3, ... и использует их для разделения текста на области при отображении страницы? И когда пользователь сохраняет исправленный раздел, просматривает ли он текущую версию, повторно анализирует текст на разделы и просто "вставляет" новую версию в копию текущей версии, которую затем сохраняет как НОВУЮ версию?

Я предполагаю, что мое понимание MediaWiki сильно упрощено, но я просто пытаюсь получить приблизительное представление.

Спасибо!

Author: loneboat, 2010-09-11

1 answers

Это может быть подсказкой - из http://en.wikipedia.org/wiki/Help:Section . В разделах используется определенная разметка как таковая:

==Section==

===Subsection===

====Sub-subsection====
  • Использование одного и того же заголовка более одного раза на странице вызывает проблемы.
  • При редактировании раздела с повторяющимся именем история изменений и сводка будут неоднозначными в отношении того, какой раздел был отредактирован.
  • При сохранении страницы после редактирования раздела браузер редактора может перейти не в тот раздел.

Разделы можно редактировать отдельно, щелкнув специальные ссылки редактирования с надписью "[редактировать]" в заголовке или щелкнув правой кнопкой мыши по заголовку раздела, в зависимости от установленных настроек. Это называется "функция редактирования разделов" (Настройки -> Редактирование -> "Включить редактирование разделов по ссылкам [редактировать]"). Функция редактирования раздела приведет вас на страницу редактирования по URL-адресу, такому как

Http://en.wikipedia.org/w/index.php?title=Help:Section&action=edit&section=2

Обратите внимание, что здесь номера разделов используется, а не названия разделов; подразделы имеют один номер, например, раздел 2.1 может быть пронумерован 3, раздел 3 затем пронумерован 4 и т.д. Вы также можете напрямую вводить такие URL-адреса в адресной строке вашего браузера.

Таким образом, похоже, что синтаксический анализатор имеет количество разделов в оглавлении, а затем использует тег = для размещения определенного текста в редакторе.

Вот некоторые из используемых таблиц:

Таблица страниц - (http://www.mediawiki.org/wiki/Manual:Page_table ) - Каждая страница в Установка MediaWiki содержит запись здесь, которая идентифицирует ее по названию

Таблица изменений содержит метаданные для каждого изменения, внесенного на страницу в вики. Каждое редактирование страницы создает строку редактирования, в которой содержится такая информация, как пользователь, внесший изменение, время, в которое было произведено изменение, и ссылка на новый викитекст в текстовой таблице

Текстовая таблица - содержит викитекст отдельных редакций страниц.

Содержимое страниц хранится в виде больших двоичных объектов. Поэтому он должен анализировать в двоичном формате.

Надеюсь, это поможет.

 3
Author: Todd Moses, 2010-09-11 05:42:20