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 simple
theme. 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}
Furthermore, 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).
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/searxng.sh:
$ sudo utils/searxng.sh instance cmd bash
(searxng-pyenv)$ pip install ...
Configure the engines¶
NoSQL databases are used for storing arbitrary data without first defining their structure.
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.
Configuration¶
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
.
Example¶
Below is an example configuration:
# 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
Implementations¶
MongoDB¶
MongoDB is a document based database program that handles JSON like data.
Before configuring the mongodb
engine, you must install the dependency
pymongo.
Configuration¶
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.
Example¶
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