mapado/simstring-bundle
Symfony bundle integrating SimString for fast approximate string matching and fuzzy search, useful for typo-tolerant lookup, similarity-based queries, and deduplicating strings across datasets.
pg_trgm, Elasticsearch/OpenSearch, Meilisearch, Typesense), or vendor a screening API. That framing is valuable even if this specific package is rejected.This is a Symfony bundle, not a Laravel package, and it is archived, with 2 stars and 0 dependents. Consider it only under a very narrow set of conditions:
require.Look elsewhere when:
pg_trgm + GIN indexes), Elasticsearch/OpenSearch, Meilisearch, or Typesense — these give you fuzzy matching with operational maturity, no native build step, and a supported upgrade path.levenshtein(), similar_text(), or a maintained pure-PHP fuzzy library is sufficient and Composer-only.Executives: A small open-source library exists for approximate name matching — the mechanism behind "we think you meant…" and duplicate-customer cleanup. The algorithm is sound and the license is permissive (MIT), but the specific package is a thin Symfony wrapper that has been archived, has no meaningful adoption (2 stars, 0 dependents), and depends on a compiled native library. More importantly, it is not built for our stack. My recommendation is not to adopt it as a dependency. Instead, treat it as a reference design and solve matching with infrastructure we already operate — Postgres trigram indexes or our search engine — which carries no build-step risk, no dead dependency in our audit trail, and a supported upgrade path. If we later need dictionary-scale matching those can't handle, we revisit the underlying algorithm behind our own interface.
Engineering: This is a Symfony bundle wrapping the SimString C++ library — n-gram indexing with cosine, Jaccard, or Dice thresholds for approximate string retrieval. It is effectively unmaintained: expect PHP/Symfony version incompatibility, no security patches, and a native extension or binary in every environment. Do not add it to composer.json. Do extract the design: precompute n-gram inverted indexes over the canonical dictionary, tune the similarity measure and threshold against labeled examples of real duplicates, and expose matching behind an internal FuzzyMatcher interface (search(string $query, float $threshold): array) so the implementation — Postgres pg_trgm, OpenSearch fuzzy, or a native library — stays swappable. Budget a small spike to benchmark pg_trgm recall/precision and p95 latency on our actual data before committing to anything heavier. Instrument for the failure modes that matter most in dedup work: stale indexes after corpus updates, threshold drift causing false-positive merges, and silent degradation to exact match when the native dependency is missing.
How can I help you explore Laravel packages today?