{"id":19978487,"url":"https://github.com/ukushu/ifrit","last_synced_at":"2025-07-01T07:07:05.524Z","repository":{"id":239337698,"uuid":"799260205","full_name":"ukushu/Ifrit","owner":"ukushu","description":"Swfit library for fuzzy search. No dependencies lib.","archived":false,"fork":false,"pushed_at":"2025-04-22T07:27:27.000Z","size":3198,"stargazers_count":60,"open_issues_count":0,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-08T08:23:45.534Z","etag":null,"topics":["app-search","full-text-search","fuzzy-matching","fuzzy-search","hybrid-search","levenstain","search","search-algorithm","search-as-you-type","search-engine","swift","typo-tolerance","typo-tolerant"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ukushu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-11T15:52:00.000Z","updated_at":"2025-06-04T10:43:20.000Z","dependencies_parsed_at":"2024-05-19T16:32:24.930Z","dependency_job_id":"7e053bfb-80dc-458d-9061-4e98bccc664b","html_url":"https://github.com/ukushu/Ifrit","commit_stats":null,"previous_names":["ukushu/ifrit"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/ukushu/Ifrit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukushu%2FIfrit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukushu%2FIfrit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukushu%2FIfrit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukushu%2FIfrit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ukushu","download_url":"https://codeload.github.com/ukushu/Ifrit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukushu%2FIfrit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262916637,"owners_count":23383886,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app-search","full-text-search","fuzzy-matching","fuzzy-search","hybrid-search","levenstain","search","search-algorithm","search-as-you-type","search-engine","swift","typo-tolerance","typo-tolerant"],"created_at":"2024-11-13T03:33:47.420Z","updated_at":"2025-07-01T07:07:05.511Z","avatar_url":"https://github.com/ukushu.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ifrit\n\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fukushu%2FIfrit%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/ukushu/Ifrit)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fukushu%2FIfrit%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/ukushu/Ifrit)\n\n\u003cimg src=\"https://raw.githubusercontent.com/ukushu/Ifrit/main/Ifrit_Logo_360.png\" width=\"150\" height=\"150\"\u003e\n\n```\nhttps://github.com/ukushu/Ifrit.git\ngit@github.com:ukushu/Ifrit.git\n```\n\n## What is Ifrit?\nIfrit is fuzzy search library written in pure swift.\n\n### What is fuzzy Search?\n\nA fuzzy search algorithm is designed to find approximate matches for a given search query. \n\nLet's say you have a list of products, and a user is looking for a \"Czy Swetr,\". Exact match will return nothing, but the fuzzy search will find \"Cozy Sweater.\".\n\nIf you need exact match - you need to use standard function `.filter { }` instead of this library.\n\nDemo of Fuzzy Search:\n\u003c!-- ![Demo](https://s17.postimg.org/47a90nmvj/bitap-search-demo.gif) --\u003e\n\n[![Ifrit demo][1]][1]\n\n### Advanteges / Disadvantages of Ifrit\n\n```diff\nAdvanteges:\n+ Super lightweight\n+ No dependencies\n+ OS supported: MacOS(\u003e=v10_15), iOS(\u003e=v13), visionOS, watchOS, twOS, Linux\n+ Async ( async/await + callbacks both )\n+ Text highlight support (AttributedString)\n+ Code covered with automated tests\n+ MIT Licensed\n+ Can be linked as both Static and Dynamic package — choose what works best for you\n\nDisadvantages:\n- Not tested in production\n- Requires Swift 5.9 or higher (older versions not supported)\n```\n\nThis repository is built upon the archived Fuse-Swift project by KRisk: https://github.com/krisk/fuse-swift\n\nSwift Package Index information: https://swiftpackageindex.com/ukushu/Ifrit\n\n\n## Difference: Ifrit VS Fuze-Swift?\n```diff\n+ Fuze-Swift support Pods and Packages :)\n- Ifrit supports only Packages :(\n\n- Fuze-Swift is dead :(\n+ 🔥🔥🔥 Ifrit is Fuse-Swift, reborn from the hells ashes! But more powerful and alive than ever! 🔥🔥🔥 :)\n\n- Fuse-Swift supports asynchronous functions with callbacks but lacks native async/await support. :(\n+ Ifrit supports callbacks and async/await both :)\n\n- Fuze-Swift have async/multithreading issues. Crashes is possible :(\n+ Ifrit is stable and crash-free!\n\n- Fuse-Swift's async functions return incorrect results - wrong indexes. :((((\n+ Ifrit's async functions return correct indexes and are fully covered with tests :)\n\n- Fuze-Swift was written for Xcode 11 and now generates numerous warnings :(\n+ Ifrit's code is updated to the latest Swift standards and fully supports Swift 6 :) \n- But Ifrit have a few build warnings :(\n\n+ Ifrit - extended coverage with automated tests :)\n+ Ifrit features an additional search system using the Levenshtein distance algorithm. :)\n+ Ifrit allows searching by multiple search templates\n+ Ifrit's syntax has been slightly adjusted for improved flexibility\n+ Ifrit's sync search is 2% faster than Fuse's (using M1 processor and standard settings).\n+         Async search performance remains the same as Fuse's (standard settings).\n```\n\n## Installation\n\n1. XCode -\u003e Menu Line -\u003e Add Package Dependencies -\u003e `https://github.com/ukushu/Ifrit.git`\n\n2. `import Ifrit` to your source files.\n\n## Documentation / Instructions / Example Project\n\nIfrit repository have no example project. Use instructions below:\n\n[How to use Ifrit's Fuse](https://github.com/ukushu/Ifrit/blob/main/Documentation/FuseInstructions.md)\n\n[How to use Ifrit's Levenstain](https://github.com/ukushu/Ifrit/blob/main/Documentation/LevenstainInstructions.md)\n\n[How to display search results in UI](https://github.com/ukushu/Ifrit/blob/main/Documentation/HowToUseSrchResult.md)\n\n## Contributing\n\nIfrit welcomes contributions in the form of GitHub issues and pull-requests.\n\n  [1]: https://i.sstatic.net/8MwFeAHT.gif\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fukushu%2Fifrit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fukushu%2Fifrit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fukushu%2Fifrit/lists"}