2016-10-22 59 views
0

我有一個varchar(255)列和FULLTEXT索引。我需要一個查詢來獲取整個列最頻繁的詞作爲如何從varchar列中獲取單詞及其在mysql中發生的頻率

Word Frequency 
key1 4533 
key2 4332 
key3 2932 

注1:我寧願跳過常用詞,如介詞,但它並不重要,因爲我可以在以後進行過濾。剛纔提到,如果它可以加快查詢。

注2:這是一張有超過一百萬行的表格。這不是一個普通的查詢,而是應該快速。

如果你甚至提供了一個提示如何查詢應該看起來像,這將是一個很大的幫助。

+0

在應用程序代碼中執行此操作,而不是SQL。 –

回答

1

這不是在MySQL中很容易做到的事情。全文索引不可用於查詢。你可以做的一件事是提取單詞。這有點痛苦。以下假定單詞由一個空格分隔並獲得前三個字的頻率:

select substring_index(substring_index(t.words, ' ', n.n), ' ', -1) as word, count(*) 
    from t cross join 
     (select 1 as n union all select 2 union all select 3 
     ) n 
     on n.n <= length(t.words) - length(replace(t.words, ' ', '') + 1 
    group by substring_index(substring_index(t.words, ' ', n.n), ' ', -1) 
    order by count(*) desc; 
相關問題