Сведения о вопросе

Fhohir

12:19, 10th August, 2020

Теги

html   database   wiki   hyperlink    

Как я должен обрабатывать autolinking в wiki контент страницы?

Просмотров: 433   Ответов: 6

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

С помощью парсера, который я использую, это двухэтапный процесс-сначала анализируется содержимое страницы и извлекаются все ссылки на страницы wiki из источника markup. Затем я передаю массив существующих страниц обратно в синтаксический анализатор, прежде чем будет создан окончательный HTML markup.

Каков наилучший способ справиться с этим процессом? Похоже, что мне нужно сохранить кэшированный список каждой отдельной страницы на сайте, а не извлекать индекс заголовков страниц каждый раз. Или лучше проверить каждую ссылку отдельно, чтобы увидеть, существует ли она? Это может привести к большому количеству запросов к базе данных, если список не был кэширован. Будет ли это по-прежнему жизнеспособно для более крупного сайта wiki с тысячами страниц?



  Сведения об ответе

nYU

01:02, 3rd August, 2020

В моей собственной системе wiki моя система кэширования довольно проста - когда страница обновляется, она проверяет ссылки, чтобы убедиться, что они действительны, и применяет правильное форматирование/расположение для тех, кто не является. кэшированная страница сохраняется как страница HTML в моем корне кэша.

Страницы, помеченные как 'not created' во время обновления страницы, вставляются в таблицу a базы данных, которая содержит страницу, а затем csv страниц, которые ссылаются на нее.

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

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


  Сведения об ответе

PAGE

00:25, 9th August, 2020

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


  Сведения об ответе

dump

19:50, 24th August, 2020

Я пытался сделать это один раз, и это был кошмар! Мое решение было неприятным циклом в процедуре SQL, и я не рекомендую его.

Одна вещь, которая дала мне проблемы, было решить, какую ссылку использовать на многословной фразе. Скажем, у вас был текст, говорящий "I am using Stack Overflow", а ваш wiki имел 3 страницы под названием "stack", "overflow" и "stack overflow"....какая часть вашей фразы связана с чем? Так и будет!


  Сведения об ответе

crush

16:54, 29th August, 2020

В личном проекте, который я сделал с Sinatra (текст ссылки) после того, как я запустил контент через Markdown, я делаю gsub, чтобы заменить wiki слов и других вещей (например, [[вот моя ссылка]] и еще много чего) с правильными ссылками, на каждой проверке, если страница существует и ссылки для создания или просмотра в зависимости.

Это не самое лучшее, но я не создавал это приложение с учетом кэширования/скорости. Это низкий ресурс простой wiki.

Если бы скорость была более важна, вы могли бы обернуть приложение во что-то, чтобы кэшировать его. Например, sinatra можно обернуть с помощью кэширования Rack.


  Сведения об ответе

прога

06:39, 12th August, 2020

Моя идея состояла бы в том, чтобы запросить заголовки, такие как SELECT title FROM articles , и просто проверить, находится ли каждая викилинк в этом массиве строк. Если это вы ссылаетесь на страницу, если нет, вы ссылаетесь на страницу создания.


  Сведения об ответе

SILA

19:06, 21st August, 2020

Основываясь на моем опыте разработки Juli , который является автономным персональным wiki с autolink, создание статического HTML подхода может решить вашу проблему.

Как вы думаете, это занимает много времени, чтобы создать автолинкованную страницу Wiki. Однако при создании статической ситуации HTML регенерация страницы Wiki с автолинковкой происходит только тогда, когда wikipage недавно добавлен или удален (другими словами, это не происходит при обновлении wikipage), и 'regenerating' может быть сделано в фоновом режиме, так что обычно я не имею значения, как это займет много времени. Пользователь увидит только сгенерированный статический HTML.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться