Автоматически связывать ключевые слова в текстах страниц из списка слов - PullRequest
0 голосов
/ 31 марта 2009

Мой сайт имеет много динамической статистики с именами людей, мест и тем, которые имеют свои собственные связанные страницы. Я хочу автоматически связать каждую из них с их страницей на основе данных, которые я настроил в базе данных MySQL для «слов» и «ссылок».

Каким был бы эффективный способ автоматического связывания 20-50 случаев потенциально 15-20 000 ключевых слов и ссылок? Я использую MySQL и PHP.

Вот аналогичный запрос для C ++

Ответы [ 2 ]

1 голос
/ 31 марта 2009

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

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

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

Например, если ваша вики-разметка для жирного шрифта **, «версия разметки» имеет **bold text**, а «отображаемая версия» - <strong>bold text</strong>. Это позволяет избежать обработки разметки при каждом просмотре страницы.

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

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

0 голосов
/ 31 марта 2009

Оболочка PHP для Снежок возможно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...