1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
[](https://github.com/RediSearch/redisearch-py/blob/master/LICENSE)
[](https://badge.fury.io/py/redisearch)
[](https://circleci.com/gh/RediSearch/redisearch-py/tree/master)
[](https://github.com/RediSearch/redisearch-py/releases/latest)
[](https://codecov.io/gh/RediSearch/redisearch-py)
[](https://snyk.io/test/github/RediSearch/redisearch-py?targetFile=requirements.txt)
# RediSearch Python Client
[](https://forum.redislabs.com/c/modules/redisearch/)
[](https://gitter.im/RedisLabs/RediSearch?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
This is a python search engine library that utilizes the [RediSearch Redis Module](http://redisearch.io) API.
It is the "official" client of redisearch, and should be regarded as its canonical client implementation.
## Features
RediSearch is an open-source (AGPL), high performance search engine implemented as a [Redis Module](https://redis.io/topics/modules-intro).
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.
### RediSearch's features include:
* Full-Text indexing of multiple fields in documents.
* Incremental indexing without performance loss.
* Document ranking (provided manually by the user at index time) and field weights.
* Auto-complete suggestions (with fuzzy prefix suggestions)
* Exact Phrase Search
* Stemming based query expansion in [many languages](http://redisearch.io/Stemming/) (using [Snowball](http://snowballstem.org/)).
* Limiting searches to specific document fields (up to 8 fields supported).
* Numeric filters and ranges.
* Automatically index existing HASH keys as documents.
For more details, visit [http://redisearch.io](http://redisearch.io)
## Example: Using the Python Client
```py
from redisearch import Client, TextField
# Creating a client with a given index name
client = Client("myIndex")
# Creating the index definition and schema
client.create_index((TextField("title", weight=5.0), TextField("body")))
# Indexing a document
client.add_document(
"doc1",
title="RediSearch",
body="Redisearch implements a search engine on top of redis",
)
# Simple search
res = client.search("search engine")
# Searching with snippets
res = client.search("search engine", snippet_sizes={"body": 50})
# Searching with complex parameters:
q = Query("search engine").verbatim().no_content().with_scores().paging(0, 5)
res = client.search(q)
# The result has the total number of results, and a list of documents
print(res.total) # "1"
print(res.docs[0].title)
```
## Installing
1. Install Redis 4.0 or above
2. [Install RediSearch](http://redisearch.io/Quick_Start/#building-and-running)
3. Install the python client
```sh
$ pip install redisearch
```
|