Как работает функция «Редактировать раздел» в Википедии? - PullRequest
9 голосов
/ 11 сентября 2010

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

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

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

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

Спасибо!

1 Ответ

3 голосов
/ 11 сентября 2010

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

==Section==

===Subsection===

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

Разделы можно редактировать отдельно, щелкая специальные ссылки редактирования, помеченные заголовком «[edit]», или щелкая правой кнопкой мыши заголовок раздела, в зависимости от установленных настроек. Это называется «функция редактирования раздела» («Настройки» -> «Редактирование» -> «Включить редактирование раздела через ссылки [edit]»). Функция редактирования раздела приведет вас на страницу редактирования по 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 есть запись, которая идентифицирует ее по заголовку

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

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

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

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

...