2012-11-05 4 views
-1

저는 현재 작업중인 응용 프로그램에 대한 등급 시스템을 개발하려고합니다. 기본적으로 앱을 사용하면 오브젝트을 1에서 5까지 (별표 표시) 평가할 수 있습니다. 그러나 나는 물론 등급 수를 유지하고 등급 자체를 등급에 추가하는 것은 이 아니며이 가능하다는 것을 알고 있습니다.등급 알고리즘

그래서 내 마음에 떠오른 것은받은 등급을 주어진 총 등급으로 나누는 입니다. 개체가 사용자로부터 등급 2를받은 것과 같고 개체의 등급이 100 회인 경우 2/100을 추가 할 수 있습니다. 그러나 나는이 방법이 1) 순진한 접근법으로는 충분하지 않다는 것을 믿는다. 2) 객체가 평가 된 횟수를 얻기 위해서 나는 시간 복잡성을 갖게 될 DB를 조사해야한다. O (n)

그래서 대체 무엇이 가능할까요? 더 좋은 방법으로이 문제에 접근하고 싶습니까?

+0

사용자 당 등급이 두 번 이상 나오지 않거나 누군가 등급을 변경하게하려는 경우 'person_id product_id rating'을 저장하고 싶을 수 있습니다. 기능 요구 사항을 지정하지 않았으므로 판단이 어렵습니다. – goat

답변

1

DB 2의 추가 값 - 모든 평가의 합계와 모든 합계의 총합을 유지할 수 있습니다. 객체의 등급을 업데이트하는 방법은 다음과 같습니다 :

  1. 총계에 새 등급을 추가하십시오.
  2. 총계를 정격 된 총 횟수로 나누십시오.
+0

당신은 확실히 옳습니다. 나는 그것을 끝내기를 갈 수도있다. 그러나 다른 평가 방법으로 ** 더 나은 평가 시스템을 적용 할 수 있을지 궁금합니다. – Ali

+0

** 다른 ** 등급 시스템이 있지만 그 중 어느 것도 단 하나의 최고 등급 시스템으로 간주되지 않았습니다 :) 귀하가 귀하의 응용 프로그램에 대해 더 자세한 정보를 제공한다면 아마도 더 잘 맞는 다른 옵션을 제안 할 수있을 것입니다 당신의 특별한 경우. – ffriend

1

가이 많은 방법이있다 그러나 같거나 일부에서 치료를 모든 의견을 제시하는 사람이

  • (패널 심사 등과 같은) 다른 사람보다 더 많은 무게가있는 경우 목표 인 경우 그 전에

    1. 을 확인 평균 또는 임의의 점수 밴드 만 제공하는 것. 이 웹 사이트와 같은 시나리오를 고려해보십시오. 전체 평판 점수를 보여줍니다.
    2. 예 - 평균을 말하면, 전체 의견과 총 계산이 필요합니다. 그러나 다른 방법이 필요하면 더 많은 계산주기를 준비하십시오. 데이터베이스 히트와 컴퓨팅 사이클 사이의 균형을 유지하지만 이는 설계의 다음 단계입니다. 먼저 요구 사항을 파악하고 솔루션을 제자리에 배치하십시오.
  • 1

    나는 당신은 또한 얼마나 많은 보여 아마존처럼 ... 등급을 calcuate하기 위해, 당신은 rating = (1*numOneStars+2*numTwoStars+3*numThreeStars+4*numFourStars+5*numFiveStars)/numOneStars+numTwoStars+numThreeStars+numFourStars+numFiveStars)

    당신이 할 수있는이 방법을 계산해야 할 것, 1 점, 2 점에 대해 별도의 카운터를 유지해야한다고 생각 ppl은 1 개의 별표를 던졌고 얼마나 많은 사람들이 5 개의 별표를 투표했습니다 ...

    0

    별 개수보다 투표 위/아래 메커니즘을 고려해 보셨습니까? 그것은 당신의 문제를 직접적으로 해결할 수는 없지만 유튜브, 페이스 북, 스택 오버 플로우 등의 다른 사이트는 별 기반의 등급보다 훨씬 효과적이기 때문에 +/- 투표를 사용합니다.