从输入文本创建标签云的最佳方法

时间:2011-07-18 03:40:18

标签: php mysql text input tag-cloud

我想知道从输入文本生成标签云的最佳方法是什么(当用户键入它时)。例如,如果用户键入包含关键词“科幻,技术,效果”的故事文本,则标签云将根据每个故事的频率按相关性排序的每个关键字形成。标签云将以降序显示并使用相同的字体大小,它不是显示算法,而是我应该实现的搜索算法。 我正在使用mysql和php。 我应该坚持MATCH ... AGAINST条款吗?我应该实现标签表吗?

更多详情 我有一个包含很多故事的mysql表。当用户输入他/她自己的一个时,我想显示一个标签云,其中包含从输入文本中获取的最频繁的单词,发生在我的数据库中保存的这组故事中。 标签云将仅用于向用户显示他/她根据所有用户输入的所有故事发生的频率在他/她自己的故事中输入的单词的相关性。

2 个答案:

答案 0 :(得分:0)

我认为您需要做的第一件事是更明确地定义标记系统的目的。您是否只想根据文本中最常出现的单词构建标签?考虑到搜索排名,我觉得这很让我感到高兴。

...或者您希望您的内容更好地组织,标签云可以提供更好的用户体验,并在内容之间创建更明确的关系(即这两者都是标记的科幻,所以在科幻类别中显示它们。

如果是前者,您可能不需要做任何事情,但是:

然后,您只需确定一个单词必须出现的次数(百分比或数字),并将这些标记存储在一个表格中,以显示标记和内容之间的关联。

要实现“当用户正在键入”部分,您只需要使用一些jQuery的ajax功能来持续调用构建标记列表的脚本(即在keydown上)。

另一种选择(更好的用户体验)将包含许多相同的元素,但你必须考虑更多。我会考虑一些事情:

  • 您是否要限制某些代码(也许您不希望任何人只允许创建新代码)?
  • 如何处理同义词
  • 如果您支持多种语言
  • 如果您希望建议现有标签(可能接近)而不是建议新标签

一旦完全定义了逻辑和用户体验,您就可以回到搜索算法。 MATCH和AGAINST是不错的选择,但你可能会发现一个简单的LIKE会为你做。

祝你好运=)

答案 1 :(得分:0)

如果您希望在用户输入标签云时生成标签云,您可以通过两种方式进行标记云。

  • 直接从输入文本
  • 更新标签云
  • 将输入文本发送到后端(使用ajax / comet实时),然后保存,计算单词频率并返回生成云的数据。

我会使用jQuery插件(例如 - http://plugins.jquery.com/plugin-tags/tag-cloud

)与前者一起使用