Create an app to perform intelligent searches on data

Note: This code pattern has been updated to work with Watson Discovery V2. Unfortunately, some of the original features of the V1 version are no longer supported and had to be removed. Keep this in mind as you view the source code, documentation, and accompanying video.


A standard search for a site can return too many results for someone to want to go through. However, it’s possible to quickly build out a search interface for your IBM Watson Discovery instance using out-of-the-box UI components that query and manipulate the enriched data to return more relevant search results. This code pattern uses publicly available reviews on Airbnb listings to demonstrate how to use individual UI components to visualize insights. You can then easily switch out the data set to adapt it to your own use cases.


By querying and manipulating enriched data, you can build a more insightful search interface. This code pattern provides a Node.js app built on the Watson Discovery Service that does just that. The pattern demonstrates how you can use individual out-of-the-box UI components to extract and visualize the enriched data provided by the Discovery analytics engine.

The main benefit of using the Watson Discovery Service is its powerful analytics engine that provides cognitive enrichments and insights into your data. The app in this code pattern provides examples of how to showcase these enrichments through the use of filters, lists, and graphs. The key enrichments are:

  • Entities: People, companies, organizations, cities, and more
  • Keywords: Important topics typically used to index or search the data
  • Sentiment: The overall positive or negative sentiment of each document
  • Parts of Speech: Recognizes parts of speech, including nouns, verbs, adjectives, adverbs, conjunctions, interjections, and numerals.

The app uses standard search UI components such as filter lists, tag clouds, and sentiment graphs, but also more complex Discovery options such as the passages and highlight features. With these two features, the app identifies the most relevant snippets in your data based on your query and is more likely to return the data that you’re searching for.

When you have completed this code pattern, you should know how to:

  • Load and enrich data in the Watson Discovery Service
  • Query and manipulate data in the Watson Discovery Service
  • Create UI components to represent enriched data created by the Watson Discovery Service
  • Build a complete web app that uses popular JavaScript technologies to feature Watson Discovery Service data and enrichments



  1. Add the Airbnb review JSON files to the Discovery collection.
  2. Use the app UI to interact with the back-end server. The front-end app UI uses React to render search results and can reuse all of the views that are used by the back end for server-side rendering. The front end is using semantic-ui-react components and is responsive.
  3. Discovery processes input and routes it to the back-end server, which is responsible for server-side rendering of the views displayed on the browser. The back-end server is written using Express and uses an express-react-views engine to render views that are written using React.
  4. The back-end server sends user requests to the Watson Discovery Service. It acts as a proxy server, forwarding queries from the front end to the Watson Discovery Service API while keeping sensitive API keys concealed from the user.


Ready to put this code pattern to use? Complete details on how to get started running and using this application are in the README.