Skip to main content

Fast fuzzy text search

Project description

Narrow Down - Efficient near-duplicate search

PyPI - Version PyPI - Python Version Tests Codecov License

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Black pre-commit Contributor Covenant

Narrow Down offers a flexible but easy-to-use Python API to finding duplicates or similar documents also in very large datasets. It reduces the O(n²) problem of comparing all strings with each other to linear scale by using approximation algorithms like Locality Sensitive Hashing.

Features

  • Document indexing and search based on the Minhash LSH algorithm
  • High performance thanks to a native extension module in Rust
  • Easy-to-use API with automated parameter tuning
  • Works with exchangeable storage backends. Currently implemented:
    • In-Memory
    • Cassandra / ScyllaDB
    • SQLite
    • User defined backends (by implementing a small interface)
  • Native asyncio interface

Installation

The Python package can be installed with pip:

pip install narrow-down

Extras

Some of the heavier functionality is available as extra:

pip install narrow-down[scylladb]   # Cassandra / ScyllaDB storage backend

Similar projects

  • pylsh offers a good implementation of the classic Minhash LSH scheme in Python and Cython. If you only need this and you don't need a database backend it can be a good choice.
  • Datasketch implements an interesting collection of different data sketching algorithms for similarity matching, cardinality estimation and k-nearest-neighbour search. The implementation is not highly optimized but very well usable, the documentation rich and multiple database backends can be used for some of the sketches
  • Milvus offers a full database stack for vector search, a different approach for fast searching. It can also be applied to text search when an emedding like Word2Vec or Bert is used to vectorize the text.

Credits

This package was created with Cookiecutter and the fedejaure/cookiecutter-modern-pypackage project template.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

narrow_down-0.9.2-cp37-abi3-win_amd64.whl (223.6 kB view details)

Uploaded CPython 3.7+Windows x86-64

narrow_down-0.9.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ x86-64

narrow_down-0.9.2-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (623.3 kB view details)

Uploaded CPython 3.7+macOS 10.9+ universal2 (ARM64, x86-64)macOS 10.9+ x86-64macOS 11.0+ ARM64

File details

Details for the file narrow_down-0.9.2-cp37-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for narrow_down-0.9.2-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a490d1af3e6de10f6537c25a6582d7c421dca07ef4f2687d2aab3d8cc8132141
MD5 3fe12bb0fac45a7e9b68fca73348946c
BLAKE2b-256 b11dd3941b1717d4d42df032934769fa15878f26be4612a4d246599692ca4767

See more details on using hashes here.

File details

Details for the file narrow_down-0.9.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for narrow_down-0.9.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c93ac8955aab7f9a9ca0a45fdb00bba13dd48b178ce43223649eca7f288e2a3
MD5 9893165b9c8fea524fb3986db586d8e4
BLAKE2b-256 4299de6c399f8c19f8cba5274f3397e9f5df4787d6987ba80e883a77bc4e6693

See more details on using hashes here.

File details

Details for the file narrow_down-0.9.2-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for narrow_down-0.9.2-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7b8ef7f2787ecb2606af98341452fa4189c660bdf045d2a238320b1d1c8ef021
MD5 edcb0bf8b243ddbb563fc67fa0307736
BLAKE2b-256 84f96345a11e25e4b71ba4b93de93f0423a9598b35fe6969b700cae746034791

See more details on using hashes here.

Supported by

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