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 embedding 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

narrow_down-1.1.0-cp37-abi3-win_amd64.whl (268.7 kB view details)

Uploaded CPython 3.7+ Windows x86-64

narrow_down-1.1.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

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

narrow_down-1.1.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (773.0 kB view details)

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

File details

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

File metadata

File hashes

Hashes for narrow_down-1.1.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 221fba17c9e8345b72ea6f7d0e7932125d5bfd7410b6da0be58f2c55aa4199f2
MD5 b1c403f3fc7ebcae162f9f5adefb314e
BLAKE2b-256 63a6f9a8dd6cb98ee67503aecdd200c2e80fc36a3ceb1b4cefc600b86378f31c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for narrow_down-1.1.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 861c142814eb3fcc2bf161bb38bb06c7a397fc59a98163febb5bd9692c486965
MD5 c0151d9f4f9cd063e67922d0d96d2f1e
BLAKE2b-256 f94e7cc1c14fb4ee11798923f312f52c5fa2c78a43cdd0493e59b97471279799

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for narrow_down-1.1.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c81fec8a317fb60af0987d8180d292826dceab62360c727b9100a20784d17193
MD5 e228235ae993b517f765135a2a583ec8
BLAKE2b-256 b26f5c9b8adba768c030f6a8287c91fc9258f69f5e1ac1b5d6666e4c41a47276

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