我想知道从输入文本生成标签云的最佳方法是什么(当用户键入它时)。例如,如果用户键入包含关键词“科幻,技术,效果”的故事文本,则标签云将根据每个故事的频率按相关性排序的每个关键字形成。标签云将以降序显示并使用相同的字体大小,它不是显示算法,而是我应该实现的搜索算法。 我正在使用mysql和php。 我应该坚持MATCH ... AGAINST条款吗?我应该实现标签表吗?
更多详情 我有一个包含很多故事的mysql表。当用户输入他/她自己的一个时,我想显示一个标签云,其中包含从输入文本中获取的最频繁的单词,发生在我的数据库中保存的这组故事中。 标签云将仅用于向用户显示他/她根据所有用户输入的所有故事发生的频率在他/她自己的故事中输入的单词的相关性。
答案 0 :(得分:0)
我认为您需要做的第一件事是更明确地定义标记系统的目的。您是否只想根据文本中最常出现的单词构建标签?考虑到搜索排名,我觉得这很让我感到高兴。
...或者您希望您的内容更好地组织,标签云可以提供更好的用户体验,并在内容之间创建更明确的关系(即这两者都是标记的科幻,所以在科幻类别中显示它们。
如果是前者,您可能不需要做任何事情,但是:
explode(' ', $content);
然后,您只需确定一个单词必须出现的次数(百分比或数字),并将这些标记存储在一个表格中,以显示标记和内容之间的关联。
要实现“当用户正在键入”部分,您只需要使用一些jQuery的ajax功能来持续调用构建标记列表的脚本(即在keydown上)。
另一种选择(更好的用户体验)将包含许多相同的元素,但你必须考虑更多。我会考虑一些事情:
一旦完全定义了逻辑和用户体验,您就可以回到搜索算法。 MATCH和AGAINST是不错的选择,但你可能会发现一个简单的LIKE会为你做。
祝你好运=)
答案 1 :(得分:0)
如果您希望在用户输入标签云时生成标签云,您可以通过两种方式进行标记云。
我会使用jQuery插件(例如 - http://plugins.jquery.com/plugin-tags/tag-cloud
)与前者一起使用