В том, что ты делаешь, много сложностей.
Ввод данных пользователем
Если вы не попросите своего пользователя предоставить какой-либо контекст, вы никогда не угадаете структуру текста. По крайней мере, вы должны попросить их предоставить заголовок и серию абзацев в вашем графическом интерфейсе.
В идеале вы можете попросить их следовать хорошо известному языку разметки (Markdown, Textile и т. д.) и использовать синтаксический анализатор с открытым исходным кодом для извлечения структуры.
Внешняя страница
Если используется какая-либо страница, единственное, на что вы можете положиться, — это «структурная разметка». Итак, если вы знаете, что заголовок страницы должен быть "Hello World" и где-то на странице есть элемент "h1", вы можете предполагать, что это место, где может располагаться заголовок.
Но если страницы представляют собой суп из тегов div, и только CSS используется для различения отображения заголовка, а не основной части текста, вам придется догадаться, как стиль сделано: это просто невозможно, если вы не знаете, как сделана страница.
Я не думаю, что Lucene поможет в этом (насколько я знаю, Lucene создан для создания указателя слов, используемых в основной части текста; я не думаю, что это может помочь вам угадать, какая часть текста имеется в виду. быть заголовком, подзаголовком и т. д.)
Создание шаблонов из внешней страницы
Предполагая, что вы «угадали» правильно, вы можете сгенерировать контент,
- копипаст страницы
- замена частей для изменения тегами выбранного вами языка шаблона
- хранение шаблона где-то, где система шаблонов может получить к нему доступ
- настройте свой шаблон / систему просмотра (viewResolver для скорости), чтобы использовать правильный шаблон для правильного человека
Это, конечно, вызовет ужасные юридические вопросы, поскольку ваши шаблоны будут включать работы оригинального автора веб-сайта (скорее всего, материалы, защищенные авторским правом).
Более реалистичное решение
Я бы посоветовал вам ограничить вашу проблему:
- используя ввод, который имеет некоторую доступную информацию о структуре (используйте графический интерфейс для его ввода, используйте язык разметки и т. д.)
- используя шаблоны, которые вы предоставляете, знаете структуру (и можете очень легко повторно использовать)
Обратите внимание, что ни один из этих пунктов не связан с системой шаблонов.
В противном случае, боюсь, вы беретесь за неразумный объем работы...
person
phtrivier
schedule
08.07.2011