Cognitive radio can improve the spectrum efficiency by allowing multiple secondary users to access the idle licensed spectrum, for which efficient and fair spectrum sharing is one of the key challenges. In this paper, we investigate the multiuser multi-channel spectrum allocation problem in cognitive radio networks with the objective of maximizing the minimum throughput among all the cognitive pairs. In the proposed approach, all the secondary users will get the opportunity to access the channel and thus a good fairness can be achieved. We first introduce a weighted bipartite graph model for this design problem. A novel semi-matching based framework is then proposed to provide an efficient suboptimal solution, which only requires statistical channel state information. Simulation results will show that by applying this approach, max-min fairness can be improved for the secondary users.