NoSQL databases

The following NoSQL databases are supported:

All of the engines above are just commented out in the settings.yml, as you have to set various options and install dependencies before using them.

By default, the engines use the key-value template for displaying results / see oscar & simple themes. If you are not satisfied with the original result layout, you can use your own template, set result_template attribute to {template_name} and place the templates at:

searx/templates/{theme_name}/result_templates/{template_name}

Futhermore, if you do not wish to expose these engines on a public instance, you can still add them and limit the access by setting tokens as described in section Private Engines (tokens).

Configure the engines

NoSQL databases are used for storing arbitrary data without first defining their structure.

Extra Dependencies

For using Redis Server or MongoDB you need to install additional packages in Python’s Virtual Environment of your SearXNG instance. To switch into the environment (Install SearXNG & dependencies) you can use utils/searx.sh:

$ sudo utils/searx.sh shell
(searx-pyenv)$ pip install ...

Redis Server

Redis is an open source (BSD licensed), in-memory data structure (key value based) store. Before configuring the redis_server engine, you must install the dependency redis.

Select a database to search in and set its index in the option db. You can either look for exact matches or use partial keywords to find what you are looking for by configuring exact_match_only. You find an example configuration below:

# Required dependency: redis

- name: myredis
  shortcut : rds
  engine: redis_server
  exact_match_only: false
  host: '127.0.0.1'
  port: 6379
  enable_http: true
  password: ''
  db: 0

MongoDB

MongoDB is a document based database program that handles JSON like data. Before configuring the mongodb engine, you must install the dependency redis.

In order to query MongoDB, you have to select a database and a collection. Furthermore, you have to select a key that is going to be searched. MongoDB also supports the option exact_match_only, so configure it as you wish. Below is an example configuration for using a MongoDB collection:

# MongoDB engine
# Required dependency: pymongo

- name: mymongo
  engine: mongodb
  shortcut: md
  exact_match_only: false
  host: '127.0.0.1'
  port: 27017
  enable_http: true
  results_per_page: 20
  database: 'business'
  collection: 'reviews'  # name of the db collection
  key: 'name'            # key in the collection to search for

Acknowledgment

This development was sponsored by Search and Discovery Fund of NLnet Foundation.