假設我們有這樣一個數據庫:獲取在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