2010-03-23 3 views
0

빈도 순위를 수행 할 쿼리를 찾고 있으므로 제공된 "키워드"가 최대로 나오는 레코드가 결과에 맨 위에 표시됩니다.빈도 순위를 수행하는 mysql 쿼리는 무엇입니까

테이블의 내 입력란은 텍스트 및 ID입니다. 누구든지이 일에서 나를 도울 수 있습니까? 미리 감사드립니다.

+0

정말 많은 정보가 필요합니다. 귀하의 질문은 제공된 키워드의 최대 발생 빈도를 묻지 만 이름이 (텍스트 및 ID)라는 열과 관련이 있습니다. "핵심어"가 본문에 포함되어 있습니까? "핵심 단어"는 텍스트와 같은가요? 이것이 의미하는 것입니까? ""키워드 "가 텍스트 열에 나타나는 횟수만큼 레코드를 순서대로 표시하는 쿼리를 원하십니까?" – MJB

+0

내 "text"열은 특정 키워드를 검색해야하는 텍스트 데이터를 가지고 있습니다. 내 질문이 맞습니다. – kshama

답변

0

어때? 키워드를 아무것도 바꾸지 않은 다음 새 크기를 이전 크기와 비교하십시오. 차이를 키워드의 길이로 나눈 값은 발견 된 횟수와 같습니다.

select id, text, 
    (length(text)-length(replace(text, 'KEYWORD', '')))/length('KEYWORD') 
from TableName 
where text like '%KEYWORD%'; 

이 나에게 가지 색다른 것 같다,하지만 당신은 SQL과 함께 일을하려고하기 때문에 나는 캐릭터가 발견 된 횟수를 반환하는 SQL 문자열 비교 함수를 생각하지 못했습니다.

+0

만약 내가 'bar'라는 단어를 찾고 있다면 위의 질의는 'barred', 'barb'와 일치 할 것입니다. 실제로 응용 프로그램에 레일을 사용하고 있습니다. 레일에 더 나은 대안이 있습니까? 어떤 제안이라도 감사하겠습니다. – kshama

+0

'KEYWORD'를 보는 대신 'KEYWORD'(주변에 공백이 있음)를 찾을 수 있습니까? 당신은 일련의 단어, 텍스트 문서 또는 무엇을보고 있습니까? 레일 대답에 관해서는, 나는 당신을 도울 수 없다. – MJB

+0

내 열 텍스트는 mysql 유형 텍스트로되어 있습니다.이 텍스트는 몇 가지 경우에 대해 1000 단어 이상으로 확장 될 수있는 일련의 텍스트입니다. 'bar'를 사용하면 테이블에 레코드가있는 경우에도 레코드가 검색되지 않습니다. SELECT ID, 텍스트, MATCH (텍스트) AGAINST ('keyword') AS 점수 OUT에서 일치 (텍스트) AGAINST ('keyword') INTO OUTFILE '/ tmp/bar1의 다른 쿼리를 하나의 mysql 포럼에서 찾았습니다. txt '; 이 쿼리는 hopsital과 같은 다른 키워드에 대해서는 정상적으로 작동하지만 바가 레코드를 제공하지 않으면 그 이유가 무엇인지 알 수 없습니다. – kshama

관련 문제