Open source software is usually released while it still contains bugs. In order to fix a reported bug during maintenance phase, the developer has to search the source code files to identify the faulty ones; this process is called bug localization (BL). Automating BL is a necessity to boost the developer's productivity and enhance the software quality. The paper proposes an information retrieval based approach for retrieving and ranking a list of suspicious faulty source files relevant to a submitted bug report (BR). The proposed approach leverages textual features of the BRs and source files, which are parts-of-speech tagging, lexical and semantic similarity between the source files and BRs, in addition to the source file change history. The effectiveness of the proposed approach was evaluated over three open-source software repositories. Experimental results showed the superiority of the proposed approach over eight previous approaches in terms of top@N and MAP metrics.