假设我们有一个像这样的数据库:
Actions_tbl:
-------------------------------------------------- ------ 编号 | 动作名称 | 用户ID| -------------------------------------------------- ------ 1 | 约翰读一本书 | 1 2 | 阅读约翰的书| 高分辨率照片| CLIPARTO 1 3 | 乔跳过火| 2 4 | 读另一本书| 2 5 | 约翰在图书馆看书 | 1 6 | 乔读了一本书 | 2 7 | 读一本书| 3 8 | 无缘无故跳是罗纳德的习惯| 3
用户表:
---------------------- 用户 ID | 用户名 | ---------------------- 1 | 约翰 2 | 乔 3 | 罗纳德 4 | 阿拉兹 ----------------------
想知道我是否可以选择重复次数最多的类似操作,而不管它的用户是什么,并将我自己的 user_name 替换为其当前用户!
读一本书,读一本书,再读一本书,在图书馆读一本书,读一本书和读一本书是最常见的单词,所以与读书相关的工作人员重复了6次,我的系统应该显示随机选择这六个句子之一并将 Araz 替换为 user_name
喜欢:阿拉兹看书
我的想法是
select replace(a.action_name , b.user_name) from actions_tbl a, user_tble b where a.user_id = b.user_id group_by
然后使用 php 在 php 中一一检查相似之处
levenshtein()
但这一个根本没有表现!
假设我想为一个大数据库和几个不同的表做同样的事情。这会毁了我的服务器!!!
有更好的想法吗?
在http://www.artfulsoftware.com/infotree/queries.php#552中,levenshtein() 函数是作为 MySQL 函数实现的,但首先,你认为它有足够的性能吗?然后,如何在我的情况下使用它?也许一个自加入面包车解决了这个问题,但我对 sql 不是很好!
* 相似动作,是有超过 X% 常用词的动作
**更多信息和说明:**
我仅限于 PHP 和 MySQL。
这只是一个例子,在我的真实项目中,动作是长段落。这就是为什么性能是一个问题。真实场景是:用户为多个项目输入了其项目的描述,这些数据可能过于相似(用户将有相同的工作领域),我想自动填写(基于之前的填写)下一个项目的描述,为了省时间。
如果您有任何实用的 解决方案,我将不胜感激。我查看了 NLP 相关的解决方案,虽然它们很有趣,但我认为它们中的很多都不是准确的并且可以使用 PHP 来实现。
输出应该是有意义的,并且像所有其他项目一样是一个适当的段落。这就是为什么我想从以前的选择中选择。
感谢您的智慧回答,如果您能对这些情况有所了解,我们将不胜感激