쿼리 제안의 경우 각 검색 쿼리의 발생 횟수를 계산하는 것이 좋습니다. 동일한 사용자가 반복 쿼리를 계산하지 않는 것이 좋습니다.
"britney spears" 12
"kelly clarkson" 5
"billy joel" 27
"query abcdef" 2
"lady gaga" 39
...
그런 다음 당신은 발생의 내림차순으로 정렬 할 수 있습니다 : 당신은이 같은 파일/테이블/일 (쿼리 수를)해야합니다 그리고
"lady gaga" 39
"billy joel" 27
"britney spears" 12
"lady xyz" 5
"query abcdef" 2
...
사람이 "lady"
를 검색하고, 대한 예를 들어, 파일/테이블/무언가의 맨 위부터 맨 아래까지 모든 문자열에 접두어 검색을 수행하십시오. K
개의 추천 만 받고 싶은 경우 Top-K
개의 추천을 찾을 때까지 이동합니다.
당신이 간단한 파일을 사용하여 구현할 수, 또는 당신은 또한 계산 쿼리 테이블을 가지고 비슷한 쿼리를 수행 할 수 있습니다
SELECT q.query from (SELECT * from search_queries order by query_count DESC) as q where q.query LIKE "prefix%" LIMIT 0,K
두 노트 :
- 있습니다 (더를 이것을하기의 더 어려운) 방법. 예를 들어, 아마존은 훌륭한 쿼리 제안을 가지고 있습니다.
제공된 솔루션은 사용자 쿼리로 시작하는 쿼리 만 제안합니다.마찬가지로 :
는 "여자"=> [ "여자 가가", "여성 XYZ"]
쿼리 "여자"는 "가가 레이디"를 일치하지 않습니다. 일치 시키려면 데이터베이스의 전체 텍스트 검색 지원이나 Lucene과 같은 외부 라이브러리를 통해 쿼리 인덱싱이 필요합니다.
@Jeyanth Kumar : 왜이 대답을 받아 들였습니까? Felipe는 "가장 최근에 검색 한"결과를 주문하는 방법을 설명하지 않습니다. I.E. '숙취'는 더 많은 검색이있는 경우 항상 '숙취 2'이전입니다. 그냥 선생님! – Briguy37
@ Briguy37 : 쿼리 카운트 필드를 한 번 "재설정"하면 쉽게이 작업을 수행 할 수 있습니다. all-time-query-count에 대한 열/필드와 today-query-count 등에 대한 열/필드를 저장할 수 있습니다. 구현 방법에 대한 개념은 동일합니다. –