Я думаю, что первое, что вам нужно сделать, это более четко определить назначение вашей системы тегов.Вы хотите просто создать теги на основе слов, которые встречаются в тексте чаще всего?Это кажется мне чем-то разработанным с учетом ранжирования поиска.
... Или вы хотите, чтобы ваш контент был лучше организован, а облако тегов - это способ улучшить взаимодействие с пользователем и создать более четкие отношениямежду частями контента (т. е. оба они помечены как научно-фантастические, поэтому отображайте их в категории научной фантастики).
Если первое относится к делу, вам, возможно, не нужно ничего делать, кроме:
- Разбить текст разделителем, как один пробел
explode(' ', $content);
- Иметь список (возможно, в файле конфигурации или в самом скрипте) слов, которые часто встречаются, которые вы хотитечтобы исключить из себя теги (и, или, это, и т. д.) Вы можете просто отключить их от страниц, как это: http://www.esldesk.com/vocabulary/pronouns, http://www.english -grammar-revolution.com / list-of-conunctions.html
Тогда вам просто нужно решить, сколько раз слово должно встречаться (в процентах или в цифрах), и сохранить эти теги в таблице, которая показывает связь между тегамиs и content.
Чтобы реализовать часть "как пользователь печатает", вам просто нужно использовать немного функциональности jjuery ajax, чтобы постоянно вызывать ваш скрипт, который создает список тегов (то есть при нажатии клавиш).
Другой вариант (лучший пользовательский опыт) будет включать в себя множество одинаковых элементов, но вам придется подумать немного больше.Некоторые вещи, которые я хотел бы рассмотреть:
- Хотите ли вы ограничиться определенными тегами (возможно, вы не хотите позволять кому-либо создавать новые теги)?
- Как вы будете действоватьс синонимами
- Если вы будете поддерживать несколько языков
- Если вы предпочитаете предлагать существующие теги (которые могут быть близки), а не предлагать новые
Как только выВы полностью определили логику и пользовательский опыт, вы можете вернуться к алгоритму поиска.MATCH и AGAINST - хорошие варианты, но вы можете найти, что простой LIKE сделает это за вас.
Удачи =)