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

标签 php mysql text input tag-cloud

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

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

最佳答案

我认为您需要做的第一件事是更清楚地定义标签系统的用途。您想简单地根据文本中出现频率最高的词来构建标签吗?这让我印象深刻,因为它在设计时就考虑到了搜索排名。

...或者您是否希望更好地组织您的内容,并且标签云是一种提供更好的用户体验并在内容片段之间创建更明显的关系的方式(即这些都被标记为科幻,所以将它们显示在科幻类别中)。

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

然后您只需要决定一个词必须出现多少次(百分比或数字),并将这些标签存储在一个表格中,该表格显示标签和内容之间的联系。

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

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

  • 您想限制某些标签(也许您不想只允许任何人创建新标签)吗?
  • 你将如何处理同义词
  • 如果您将支持多种语言
  • 如果您想优先推荐现有标签(可能接近)而不是推荐新标签

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

祝你好运 = )

关于php - 从输入文本创建标签云的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6728429/

相关文章:

mysql - 不同主机上不同数据库之间的触发器

PHP pdo 类 getadresses 警告和调用非对象上的成员函数prepare()

c - 将这行文本读入结构的最简单方法?

python - 如何使用python-docx替换Word文档中的文本并保存

php - 按 NextPageID 字段排序数组

php - 蛋糕 PHP : Undefined error when using Form helper

mysql - 如何在 MYSQL 中通过另一列选择具有 MAX(列值)、PARTITION 的行?

text - 显式语义分析

php - 重定向问题 : Twitter API Oauth

javascript - 使用 laravel 对象在 vue 模板中动态图像的数据绑定(bind)样式