Skip to main content

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.

License: MIT Unit tests main Unit tests development Documentation Status

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pocketsearch-0.30.0.tar.gz (33.7 kB view details)

Uploaded Source

Built Distribution

pocketsearch-0.30.0-py3-none-any.whl (33.3 kB view details)

Uploaded Python 3

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

Hashes for pocketsearch-0.30.0.tar.gz
Algorithm Hash digest
SHA256 d867d02d61b4235c2fff86d55979d8e1af177a8e69be0d51d67e5a932cfe9e2e
MD5 e132376c940cf6da7c1b345c3e51b958
BLAKE2b-256 6d011398e5351cf2d8d396d214ba556b538175cace335aa3752ea371736eca82

See more details on using hashes here.

File details

Details for the file pocketsearch-0.30.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pocketsearch-0.30.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b4ed88536e89b33fd7ccf10df3dc4fbb47ec083ddaee92fc517d0242a668a9cb
MD5 2788471f4d857b781b24445a5171bbf1
BLAKE2b-256 4ab0d883a5e9ebbea5881494f2b567e77bbba2b97ab3625712514d78e9c710a2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page