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

Php 从输入文本创建标记云的最佳方法,php,mysql,text,input,tag-cloud,Php,Mysql,Text,Input,Tag Cloud,我想知道从输入文本(当用户输入时)生成标记云的最佳方法是什么。例如,如果用户键入包含关键字“sci-fi、technology、effects”的故事文本,则标签云将根据每个故事中的关键字频率按相关性排序。标记云将按降序显示,并使用相同的字体大小,这不是显示算法,而是我应该实现的搜索算法。 我正在使用mysql和php。 我应该坚持匹配…反对条款吗?我应该实现一个标签表吗 更多详细信息 我有一个mysql表,其中包含很多故事。当用户键入他/她自己的一个时,我希望显示一个标记云,其中包含保存在我的

我想知道从输入文本(当用户输入时)生成标记云的最佳方法是什么。例如,如果用户键入包含关键字“sci-fi、technology、effects”的故事文本,则标签云将根据每个故事中的关键字频率按相关性排序。标记云将按降序显示,并使用相同的字体大小,这不是显示算法,而是我应该实现的搜索算法。 我正在使用mysql和php。 我应该坚持匹配…反对条款吗?我应该实现一个标签表吗

更多详细信息 我有一个mysql表,其中包含很多故事。当用户键入他/她自己的一个时,我希望显示一个标记云,其中包含保存在我的数据库中的这组故事中最常见的单词,这些单词取自输入文本。
标签云将仅用于向用户显示他/她在自己的故事中输入的单词的相关性,根据它们在所有用户输入的所有故事中出现的频率。我认为您需要做的第一件事是更清楚地定义标签系统的用途。您想简单地根据文本中出现频率最高的单词构建标记吗?这给我的印象是,在设计搜索排名时考虑到了这一点

…或者您希望您的内容更好地组织,而标签云是提供更好的用户体验和在内容片段之间创建更清晰关系的一种方式(即两者都是标签科幻,因此将它们显示在科幻类别中)

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

  • 用分隔符分解文本,就像单个空格
    分解(“”,$content)
  • 有一个经常出现的单词列表(可能在配置文件中,也可能在脚本本身中),您希望将这些单词从标记中排除(和,或,这个,等等)。您可以像这样将它们从页面中删除:
然后,您只需要决定一个单词必须出现多少次(百分比或数字),并将这些标记存储在一个表中,该表显示标记和内容之间的连接

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

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

  • 是否要限制某些标记(可能不希望只允许任何人创建新标记)
  • 你将如何处理同义词
  • 如果您支持多种语言
  • 如果您希望建议现有标记(可能比较接近)而不是建议新标记,那么
一旦你完全定义了逻辑和用户体验,你可以回到搜索算法。匹配和反对是很好的选择,但你可能会发现一个简单的喜欢会为你做到这一点


Good luck=)

如果希望在用户键入标记云时生成标记云,可以通过两种方式来实现

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

我会使用jQuery插件,比如-

来支持前者,谢谢您的回复Calvin。我想我没有很好地解释我的问题。请参阅我的答复,了解关于这一问题的澄清。