Recently I was doing some R&D with the SharePoint Ratings and so
thought to share my thoughts.
As we know that with the launch of SharePoint 2010 version, we
got new social features like content tagging and content rating. For content
ratings, we can rate the different contents in the list and libraries in range
of 0 to 5.
For example: I have a publishing site and the pages library, so I
need to have functionality such that the end users should be able to rate the
pages inside the pages library.
How to do this?
For any list or library, there is a link to set the rating
capability. When you go to the List and then in its settings, there you can see
the link named as "Rating Settings". After you click on that, a page opens where
you can enable and disable this setting.
Ok so far so good. ? But what happens in the background?
Well, I have observed that when you enable ratings on any list or
library, the two Site Columns/Fields gets added to the SharePoint list.
Obviously those get added to hold this rating as a metadata.
Which are those fields?
Field names are:
Display Name |
Internal Name |
GUID
|
1. Rating (0-5) |
AverageRating |
{5a14d1ab-1513-48c7-97b3-657a5ba6c742} |
2. Number of Ratings |
RatingCount |
{b1996002-9167-45e5-a4df-b2c41c6723c7} |
And here is the screen shot after enabling the rating on pages list
Rating is the asynchronous event and we talk about social
features, they gets saved in social database which gets created when you have
activated the user profile service application. So in short, to use rating you
should have a user profile service running in your farm.
There is one timer job "User Profile Service Application -
Social Rating Synchronization" job which by default runs after every hour and
aggregates all the ratings.
Why
ratings disappear after page refresh?
I was also puzzled by a question that when we try to rate a page
in pages library and then refresh the page, ratings given were disappearing.
Why?
So answer is the Timer Job. As this job runs every hour, so
unless and until the job has run and aggregated the ratings, we don't see the
ratings which were given. So I changed the job schedule to run every minute to
have immediate effects.