RediSearch python client
This is a Python search engine library that utilizes the RediSearch Redis Module API.
It is the "official" client of RediSearch, and should be regarded as its canonical client implementation.
RediSearch is a source avaliable (RSAL), high performance search engine implemented as a Redis Module. It uses custom data types to allow fast, stable and feature rich full-text search inside Redis.
This client is a wrapper around the RediSearch API protocol, that allows you to utilize its features easily.
For more details, visit http://redisearch.io
from redisearch import Client, TextField, IndexDefinition, QueryCreating a client with a given index name
client = Client("myIndex")
IndexDefinition is available for RediSearch 2.0+
definition = IndexDefinition(prefix=['doc:', 'article:'])
Creating the index definition and schema
client.create_index((TextField("title", weight=5.0), TextField("body")), definition=definition)
Indexing a document for RediSearch 2.0+
client.redis.hset('doc:1', mapping={ 'title': 'RediSearch', 'body': 'Redisearch impements a search engine on top of redis' })
Indexing a document for RediSearch 1.x
client.add_document( "doc:2", title="RediSearch", body="Redisearch implements a search engine on top of redis", )
Simple search
res = client.search("search engine")
the result has the total number of results, and a list of documents
print(res.total) # "2" print(res.docs[0].title) # "RediSearch"
Searching with complex parameters:
q = Query("search engine").verbatim().no_content().with_scores().paging(0, 5) res = client.search(q)
$ pip install redisearch
Testing can easily be performed using using Docker. Run the following:
make -C test/docker test PYTHON_VER=3
(Replace
PYTHON_VER=3with
PYTHON_VER=2to test with Python 2.7.)
Alternatively, use the following procedure:
First, run:
PYTHON_VER=3 ./test/test-setup.sh
This will set up a Python virtual environment in
venv3(or in
venv2if
PYTHON_VER=2is used).
Afterwards, run RediSearch in a container as a daemon:
docker run -d -p 6379:6379 redislabs/redisearch:2.0.0
Finally, invoke the virtual environment and run the tests:
. ./venv3/bin/activate REDIS_PORT=6379 python test/test.py REDIS_PORT=6379 python test/test_builder.py