假设我们有这样一个数据库:获取在MySQL数据库中重复最多的类似领域
Actions_tbl:
-------------------------------------------------------- id | Action_name | user_id| -------------------------------------------------------- 1 | John reads one book | 1 2 | reading the book by john | 1 3 | Joe is jumping over fire | 2 4 | reading another book | 2 5 | John reads the book in library | 1 6 | Joe read a book | 2 7 | read a book | 3 8 | jumping with no reason is Ronald's habit| 3
Users_tbl:
----------------------- user_id | user_name | ----------------------- 1 | John 2 | Joe 3 | Ronald 4 | Araz -----------------------
想知道我可以选择最重复的类似行动章程无用的用户,并用其当前用户替换我自己的user_name!
阅读一本书,读这本书,读另一本书,在图书馆读书,读一本书,读一本书是最常用的单词,所以与阅读本书有关的工作人员重复6次,我的系统应显示这六个句子的一个随机与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检查由一个相似之处一个使用
levenshtein()
但是这个根本没有表现!
假设我想为大分贝和少数不同的表做同样的事情。 这将摧毁我的服务器!
还有什么更好的IDEA?
in http://www.artfulsoftware.com/infotree/queries.php#552 the levenshtein()函数是作为一个MySQL函数实现的,但首先你认为它有足够的性能吗?然后,如何在我的情况下使用它? 也许自联接面包车解决这个问题,但我不与SQL好!
*类似的行动,是具有行动超过X%的常用词
**更多信息和注意事项:**
我m仅限于PHP和MySQL。
这只是一个例子,在我的实际项目的行动很长的段落。这就是为什么表现是一个问题。真实的情况是:用户输入其项目的描述了几个项目,这些数据可能是太相似(用户必须在同一工作区域),我想,以填补自动(以前的馅料基地)的下一个项目的描述,为了省时间。
我将不胜感激,如果你能有任何务实解决方案。我检查了NLP相关的解决方案,虽然它们很有趣,但我认为其中很多都不是很准确,并且可以使用PHP实现。
输出应该是有意义的,并像所有其他项目一样成为一个适当的段落。这就是为什么我想从以前的选择。
感谢您的知识产权的答案,它真的很感激,如果你能在情况
这里是一个例子:http://stackoverflow.com/questions/4671378/levenshtein-mysql-php – mdo 2012-07-18 09:39:28
检查mysql中的soundex函数。这可以帮助你imo。 – 2012-07-18 09:44:34
@mdo,谢谢,我之前检查过,它的一个术语和字段之间的相似性是我想要的所有行之间的相似性 – 2012-07-18 09:49:16