2011-01-24 5 views
0

검색 유틸리티를 중심으로 한 웹 사이트에서 가장 많이 검색된 검색어 중 상위 10 개 (또는 뭔가)를 나열하는 홈페이지에 뭔가를 갖고 싶습니다."상위 쿼리"페이지 작성 방법

이렇게하는 것이 가장 쉽고/가장 효율적인 방법은 무엇입니까?

SQL 데이터베이스를 사용해야합니까, 아니면 상위 10 개 쿼리와 매일 데이터를 지우는 cronjob이 포함 된 텍스트 파일을 사용해야합니까?

또한 두 사용자가 동일한 항목을 검색하면서 그 중 하나만 녹화하는 문제, 즉 멀티 스레딩 문제를 어떻게 피할 수 있습니까? 당신이 데이터베이스 백엔드를 사용하는 경우

사이트의 백엔드 모든 파이썬

답변

2

고유 한 쿼리 당 하나의 행과 카운트 할 열이있는 테이블에 쿼리를 넣습니다. 쿼리가 이미 존재하지 않으면 삽입하거나 그렇지 않으면 쿼리 행 카운터를 증가시킵니다.

크론 작업을 함께 사용하면 12시 자정에 테이블을 비울 수 있습니다. 트랜잭션을 사용하여 서로 다른 두 요청이 충돌하지 않도록합니다.

0

로 작성, 파이썬 프레임 워크와 RDBMS 조합은 문제의 이상을해야 동시성을 처리 할 수있을 것입니다.

전체 쿼리 검색 문자열 (단어 조합?)을 테이블에 계속 로깅하고 하루가 끝날 때 간단한 집계 쿼리를 사용하여 결과를 생성하십시오.

같은 간단한 테이블 (예를 들어 MySQL을 사용) 할 것입니다

query: id autonumber, search_time datetime, search_string varchar 

당신은 10

select date(search_time), search_string, count(*) times_searched 
from query 
group by date(search_time), search_string 
order by 3 desc 
limit 0,10; 

을 위해 즉석에서이를 조회 할 수 있습니다 또는 당신이에 쿼리를 던질 수 CRON 작업은 성능상의 이유로 10 개 항목의 목록이 변경되지 않으므로 날짜별로 정적 파일을 생성합니다.

감사의 경우 어제의 정적 인 톱 10이 생성 된 후에는 테이블 항목을 유지하거나 필요하지 않은 경우 전날의 빈 데이터 만 유지하면됩니다.