2.000.000 메시지가있는 데이터베이스가 있습니다. 사용자가 메시지를받을 때 단어의 발생을 기반으로 데이터베이스에 관련 메시지를 찾아야합니다.가장 큰 데이터베이스에서 유사한 메시지를 찾는 방법
데이터베이스를 요약하기 위해 일괄 처리를 실행 해 보았습니다. 1 - 모든 메시지의 모든 단어 (a, the, for, for ... 제외)를 저장합니다. 2 - 모든 메시지와 거기에 포함 된 단어 사이의 연관성을 생성합니다.이 단어의 빈도를 메시지에 저장합니다.
메시지 수신시 : 1 - 2 - 데이터베이스에서 쿼리를 수행하여 일치하는 단어의 수로 정렬 된 메시지를 가져옵니다.
그러나 내 단어 기반과 유사한 메시지를 가져 오는 쿼리를 업데이트하는 프로세스는 매우 무겁고 느립니다. 단어 업데이트는 3000 바이트의 메시지에 대해 ~ 1.2111 초 동안 지속됩니다. 비슷한 메시지를 쿼리하는 데는 동일한 크기의 메시지가 ~ 9.8 초 동안 지속됩니다.
데이터베이스 조정이 이미 완료되었으며 코드가 올바르게 작동합니다.
더 나은 알고리즘이 필요합니다.
아이디어가 있으십니까?
전체 텍스트 검색이 필요하지 않습니까? http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html – Mchl
"Collective Intelligence"라는 책을 적극 추천합니다. http://www.amazon.com/Programming-Collective-Intelligence -building-Applications/dp/0596529325/ref = sr_1_1? ie = UTF8 & qid = 1296849440 & sr = 8-1. 파이썬 용으로 작성되었지만 다른 언어로 구현하는 이론은 많이 있습니다. 이 책의 맨 처음 장은 당신이하려고하는 것을 포함합니다 –
방금 주문을했습니다. –