- Notifications
You must be signed in to change notification settings - Fork24
💦🤘 A mimetic poly-alloy of the Quicksilver scoring algorithm, essentially LiquidMetal. </Schwarzenegger Voice>
License
rmm5t/liquidmetal
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A mimetic poly-alloy of the Quicksilverscoring algorithm, essentially LiquidMetal.</Schwarzenegger Voice>
Flex matching short abbreviations against longer strings is a boon inproductivity for typists. Applications likeQuicksilver,Alfred,LaunchBar, andLaunchy have made this method of keyboard entry apopular one. It's time to bring this same functionality to web controls.LiquidMetal makes scoring long strings against abbreviations easy.
Include the library:
<script src="liquidmetal.js" type="text/javascript"></script>
Score any string against an abbreviation:
LiquidMetal.score("FooBar", "foo") //=> 0.950LiquidMetal.score("FooBar", "fb") //=> 0.917LiquidMetal.score("Foo Bar", "fb") //=> 0.929LiquidMetal.score("Foo Bar", "baz") //=> 0.0LiquidMetal.score("Foo Bar", "") //=> 0.8
All scores fall between a range of 0.0 (no match) to 1.0 (perfect match).
- Quicksilver and itsscoreForAbbreviation algorithm by Alcor
- Quicksilver.js byLachie Cox
- To satisfy my own requirements for thejquery.flexselect plugin
- The Quicksilver algorithm doesn't give proper weight to abbreviations thatmatch the first character of the scored string.
- The Quicksilver algorithm is extremely slow for certain lengthstring/abbreviation combinations because of its use of recursion. Whileslightly slower for shorter length string/abbreviation combinations,LiquidMetal outperforms the Quicksilver algorithm by orders of magnitude underother conditions.
- The javascript version of the Quicksilver algorithm (Quicksilver.js) is casesensitive and doesn't give added weight to camel case strings; whereas,LiquidMetal is case insensitive and does give added weight to uppercaseletters in camel case strings.
- More tests
- Consider tweaking the scores for "trailing" characters
- Improve implementation of highest score matching (LiquidMetalcurrently returns the highest scoring match for an abbreviation,but is inefficient)
- See if it's possible to tune the performance further
About
💦🤘 A mimetic poly-alloy of the Quicksilver scoring algorithm, essentially LiquidMetal. </Schwarzenegger Voice>