2016-10-22 1 views
0

열에는 FULLTEXT 색인이 있습니다. 나는mysql에서 varchar 열과 그 발생 빈도를 구하는 방법

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; 
관련 문제