A pure-Python full text indexing search library based on sqlite and the FTS5 extension.
Project description
pocketsearch
pocketsearch is a pure-Python full text indexing search library based on SQLite and the FTS5 extension. It provides
- A simple API (inspired by the ORM layer of the Django web framework) for defining schemas and searching - no need to write SQL
- Multi-field indices using schemas including text, numeric and date/datetime search
- Prefix, phrase and initial token queries
- Spell checking
- Boolean search queries
- Highlightning search results and extracting snippets
- Autocomplete features
Pocketsearch does not have any dependencies other than Python (3.8 or higher) itself.
Quick start
Install using PIP:
pip install pocketsearch
Create a search index using a PocketWriter and store it to database my_db.db:
import pocketsearch
with pocketsearch.PocketWriter(db_name="my_db.db") as pocket_writer:
pocket_writer.insert(text="Hello world")
Open the search index using a PocketReader to perform searches:
import pocketsearch
with pocketsearch.PocketReader(db_name="my_db.db") as pocket_reader:
for result in pocket_reader.search(text="Hello world"):
print(result.text)
You can define custom schemas to create multi-field indices:
import pocketsearch as ps
class Product(ps.Schema):
price = ps.Int()
description = ps.Text(index=True) # part of full text (FT) index
category = ps.Text() # not part of FT index
with ps.PocketWriter(db_name="my_db.db",schema=Product) as pocket_writer:
pocket_writer.insert(description="Apple",category="Fruit",price=3.21)
pocket_writer.insert(description="Orange",category="Fruit",price=4.11)
with ps.PocketReader(db_name="my_db.db",schema=Product) as pocket_reader:
# Search for products with a price greater than or equal 3:
print(pocket_reader.search(price__gte=3).count())
Read the complete documentation at https://pocketsearch.readthedocs.io/
Use cases
pocketsearch is intended for projects looking for a server-less, seamless integration into existing Python projects with low to medium-sized document collections.
Please refer to https://github.com/kaykay-dv/pocketsearch/tree/main/tests/DCEP to see how pocketsearch can be used to index more than 160,000 documents.
Status
The package is currently in Beta status.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pocketsearch-0.30.0.tar.gz
.
File metadata
- Download URL: pocketsearch-0.30.0.tar.gz
- Upload date:
- Size: 33.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d867d02d61b4235c2fff86d55979d8e1af177a8e69be0d51d67e5a932cfe9e2e |
|
MD5 | e132376c940cf6da7c1b345c3e51b958 |
|
BLAKE2b-256 | 6d011398e5351cf2d8d396d214ba556b538175cace335aa3752ea371736eca82 |
File details
Details for the file pocketsearch-0.30.0-py3-none-any.whl
.
File metadata
- Download URL: pocketsearch-0.30.0-py3-none-any.whl
- Upload date:
- Size: 33.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4ed88536e89b33fd7ccf10df3dc4fbb47ec083ddaee92fc517d0242a668a9cb |
|
MD5 | 2788471f4d857b781b24445a5171bbf1 |
|
BLAKE2b-256 | 4ab0d883a5e9ebbea5881494f2b567e77bbba2b97ab3625712514d78e9c710a2 |