As code search is a frequent developer activity in software development
practices, improving the performance of code search is a critical task. In the
text retrieval based search techniques employed in the code search, the term
mismatch problem is a critical language issue for retrieval effectiveness. By
reformulating the queries, query expansion provides effective ways to solve the
term mismatch problem. In this paper, we propose Query Expansion based on Crowd
Knowledge (QECK), a novel technique to improve the performance of code search
algorithms. QECK identifies software-specific expansion words from the high
quality pseudo relevance feedback question and answer pairs on Stack Overflow
to automatically generate the expansion queries. Furthermore, we incorporate
QECK in the classic Rocchio's model, and propose QECK based code search method
QECKRocchio. We conduct three experiments to evaluate our QECK technique and
investigate QECKRocchio in a large-scale corpus containing real-world code
snippets and a question and answer pair collection. The results show that QECK
improves the performance of three code search algorithms by up to 64 percent in
Precision, and 35 percent in NDCG. Meanwhile, compared with the
state-of-the-art query expansion method, the improvement of QECK Rocchio is 22
percent in Precision, and 16 percent in NDCG.Comment: 14 pages, 5 figures, IEEE Transactions on Services Computing, 201