Overview of the PuppyIR Framework

PuppyIR is a framework for building search services specifically for children. The goal of the framework is to simplify the process of building such services, by incorporating current research findings on children as information seekers with respect to their specific needs and requirements. The framework includes an extensible suite of components to retrieve information from multiple web services (Bing, Twitter, YouTube, etc), a common result (and query) format and a large variety of information processing components (like filters and modifiers) to augment and moderate search queries & results.


  • Search Service Integration (Bing, Twitter, YouTube, etc)
  • Search Query and Result Processing Components
  • Support for the Opensearch Standard
  • Standalone and Django Web Service Modes

Which version of Python is the framework for?

The PuppyIR framework is designed, built and maintained using Python 2.7; Python 3.x is not supported and earlier versions may have compatibility issues (it is, therefore, recommended to upgrade to Python 2.7 rather than use earlier versions).

Standalone Services

The PuppyIR framework can be used to build a standalone service for research and development purposes. This mode has minimal requirements and simplifies the process of building custom search services that do not require a user interface. See Building a Standalone PuppyIR Service for more information.

Django Web Services

The PuppyIR framework can be integrated with the Django web application framework to provide a toolkit for rapidly prototyping and deploying search services for children on the web. PuppyIR includes a number of components that augment the existing Django functionality. See BaSe Tutorial - Building a PuppyIR/Django Service for more information.

N.B. Django is provided as an example, the framework can also work with other Python based web application frameworks as no parts of the framework are tied into Django.

Proxy Server Support

If you’re running your PuppyIR applications through a proxy server you can set this up using the config variable (see Building a Standalone PuppyIR Service as an example for the context of where this variable appears):

config = {
  "proxyhost": "http://your-proxy-server-address",