fuzzball.js
wildflower
fuzzball.js | wildflower | |
---|---|---|
2 | 2 | |
502 | 8 | |
- | - | |
4.1 | 3.2 | |
9 days ago | about 1 month ago | |
JavaScript | Rust | |
GNU General Public License v3.0 only | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
fuzzball.js
-
Unlocking Advanced RAG: Citations and Attributions
import { ratio, } from 'fuzzball'; import { SequenceMatcher } from 'difflib'; // modified from: https://github.com/nol13/fuzzball.js/blob/773b82991f2bcacc950b413615802aa953193423/fuzzball.js#L942 function partial_ratio(str1: string, str2: string) { if (str1.length <= str2.length) { var shorter = str1 var longer = str2 } else { var shorter = str2 var longer = str1 } var m = new SequenceMatcher(null, shorter, longer); var blocks = m.getMatchingBlocks(); let bestScore: number = 0; let bestMatch: string | null = null let bestStartIdx: number = -1 for (var b = 0; b < blocks.length; b++) { var long_start = (blocks[b][1] - blocks[b][0]) > 0 ? (blocks[b][1] - blocks[b][0]) : 0; var long_end = long_start + shorter.length; var long_substr = longer.substring(long_start,long_end); var r = ratio(shorter,long_substr); if (r > bestScore) { bestScore = r; bestMatch = long_substr; bestStartIdx = long_start; } if (r > 99.5) { break; } } return { bestMatch, bestScore, bestStartIdx, } }
-
I'm thinking of making a search tool to find Dunkey quotes. Here is a very early prototype. More details in comment.
I’ve been using the fuzzball package for the search algorithm in my current project. It might be able to help with matching non-exact strings
wildflower
-
wildflower: a fast wildcard matching crate that works on no_std
Informally speaking, yes. It does also support escape characters, which IIRC isn't part of the glob spec. There's [an issue open](https://github.com/cassaundra/wildflower/issues/7) to support character ranges as well, which I can see leading to things like character classes too.
What are some alternatives?
ZLOOKUP - Google Sheet Fuzzy String Matching Function
fast-glob - :rocket: It's a very fast and efficient glob library for Node.js
js-levenshtein - The most efficient JS implementation calculating the Levenshtein distance, i.e. the difference between two strings.
gowww/router - ⚡️ A lightning fast HTTP router
wildmatch - Simple string matching with single- and multiple-wildcard operator
micromatch - Highly optimized wildcard and glob matching library. Faster, drop-in replacement to minimatch and multimatch. Used by square, webpack, babel core, yarn, jest, ract-native, taro, bulma, browser-sync, stylelint, nyc, ava, and many others! Follow micromatch's author: https://github.com/jonschlinkert
wild-wild-path - 🤠 Object property paths with wildcards and regexps 🌵