  Code search is an important and frequent activity for developers using
computational notebooks (e.g., Jupyter). The flexibility of notebooks brings
challenges for effective code search, where classic search interfaces for
traditional software code may be limited. In this paper, we propose, NBSearch,
a novel system that supports semantic code search in notebook collections and
interactive visual exploration of search results. NBSearch leverages advanced
machine learning models to enable natural language search queries and intuitive
visualizations to present complicated intra- and inter-notebook relationships
in the returned results. We developed NBSearch through an iterative
participatory design process with two experts from a large software company. We
evaluated the models with a series of experiments and the whole system with a
controlled user study. The results indicate the feasibility of our analytical
pipeline and the effectiveness of NBSearch to support code search in large
notebook collections.
