Service-Oriented Computing has brought great benefits for both service requesters and service providers. The potential of this paradigm cannot be achieved without efficient discovery and selection processes. The rapid-increasing volume of services and the heterogeneity of their features make the discovery and selection of services challenging. In this thesis we provide a novel vector-based ranking algorithm. The algorithm is both user-centric and semantic-based. It overcomes all restrictions and limitations that exist in previous vector-based ranking algorithms. We introduce fair ranking rules and apply them in our algorithm. The algorithm has been examined thoroughly with respect to its performance, accuracy and algorithmic complexity. We provide experimental results that show the significance and dominance of our solution over the existing ones.