저는 거의 100,000 개의 주석이 달린 데이터베이스를 가지고 있으며, 가장 많이 사용되는 단어 (일반적인 단어를 피하기 위해 정지 단어 사용)를 감지하고 싶습니다.MySQL/PHP에서 가장 인기있는 단어를 찾으십시오.
이 작업을 한 번만 수행 한 다음 가장 많이 사용되는 단어 몇 개를 사용하여 해당 단어가 포함 된 주석에 태그를 답니다.
쿼리 및 PHP 코드를 사용하면 도움이 될 수 있습니까? 감사합니다.
저는 거의 100,000 개의 주석이 달린 데이터베이스를 가지고 있으며, 가장 많이 사용되는 단어 (일반적인 단어를 피하기 위해 정지 단어 사용)를 감지하고 싶습니다.MySQL/PHP에서 가장 인기있는 단어를 찾으십시오.
이 작업을 한 번만 수행 한 다음 가장 많이 사용되는 단어 몇 개를 사용하여 해당 단어가 포함 된 주석에 태그를 답니다.
쿼리 및 PHP 코드를 사용하면 도움이 될 수 있습니까? 감사합니다.
내가 생각하는 가장 쉬운 방법은 다음과 같습니다
keywords
는 고유 ID와 키워드를 저장 (keyword_id, comment_id, 계산) keywords
(ID, 워드) 및 keywords_comments
:
keywords_comments
은 해당 키워드가 들어있는 각 설명 간의 연결마다 하나의 행을 저장합니다. count
에서이 키워드가 주석에 발생한 횟수를 저장합니다. keyword_id + comment_id라는 두 개의 열이 함께 고유하거나 직접 기본 키를 형성합니다.예를 귀하의 테이블
여보세요, 잘 있었 니?!
와우, 안녕하세요. 내 이름은 스테판이야.
이제 둘 다 반복하고 비 문자로 분할하십시오. 이것은 각 텍스트에 대해 다음 소문자 단어를 초래 : - 첫 번째 텍스트 : 안녕하세요, 당신 얼마나, - 두 번째 텍스트 : 내, 안녕하세요, 와우, 이름,이다, 즉시 구문 분석대로
을 스테판 이 텍스트 중 하나를 이미 데이터베이스에 다시 삽입 할 수 있습니다. 나는 당신이 RAM에 100,000 개의 댓글을로드하고 싶지 않다고 생각한다. 이keywords
으로 각 키워드를 작성
그래서이 갈 것 주석 (keywords_comments
) 및 개수를 올바르게 설정하십시오 (이 예에서는 각 단어가 각 텍스트에서 한 번만 발생하므로이를 계산해야합니다).
당신은 아마 100.000 의견을 사용할 필요가 아주 쉽게 개선이다
는 변수 계산 사용하거나 새 필드 has_been_analyzed을 추가 할 수 각 댓글에 그런 다음 데이터베이스에서 주석으로 주석을 읽을 수 있습니다.대개 데이터를 청크 방식으로 읽었을 때 데이터가 시작 방향에서 바뀔 수 없다는 것을 알 때 (주로 현재까지 일관된 상태로 유지됩니다) 계산할 변수를 사용합니다.
SELECT * FROM table ORDER BY created ASC LIMIT 0, 100
SELECT * FROM table ORDER BY created ASC LIMIT 100, 100
SELECT * FROM table ORDER BY created ASC LIMIT 200, 100
…
우리는 우리가 이미 읽은 생각하는 장소에 추가하는 날짜가 없음을 확실히 알고있을 경우에만 작동하는지 생각해 그리고 내가 좋아하는 뭔가. 예 : DESC
을 사용하면 데이터가 삽입 될 수 있으므로 작동하지 않습니다. 그러면 전체 오프셋이 깨지고 한 기사를 두 번 읽고 새 기사를 읽지 않을 것입니다. 외부 계수 변수가 일관성을 유지할 수없는 경우 으로 해석되는 새 필드를 추가 할 수 있습니다.이 필드는 주석을 읽 자마자 true로 설정됩니다. 그렇다면 언제 어느 주석이 이미 읽었는지 볼 수 있습니다. SQL 쿼리는 다음과 같을 것이다 : 이것은만큼 당신이 (여러 클라이언트 또는 스레드) 작업 부하를 병렬화하지 않는 한 작동
SELECT * FROM table WHERE analyzed = 0 LIMIT 100 /* Reading chunks of 100 */
. 그렇지 않으면 읽기 + 설정 true가 atomar (동기화 됨)인지 확인해야합니다.
감사합니다 @Aufziehvogel, 정말 도움이되었습니다! – Santiago
댓글은 프리 텍스트 문자열입니다. 맞습니까? 사용자가 제공 한 텍스트가 들어있는 varchar (x)와 비슷합니까? – Windle
http://stackoverflow.com/questions/9226603/sphinx-search-mysql-find-most-common-words – craig1231
희망 나는 stackoverflow 시스템을 깰하지 않았다. 내 말은, 일반적인 과정이 무엇인지 자세히 설명했다. – Aufziehvogel