Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

💦🤘 A mimetic poly-alloy of the Quicksilver scoring algorithm, essentially LiquidMetal. </Schwarzenegger Voice>

License

NotificationsYou must be signed in to change notification settings

rmm5t/liquidmetal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

Usage

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).

Inspired By

Why?

  • 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.

Todo

  • 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

Author

Ryan McGeary (@rmm5t)

License

MIT License

About

💦🤘 A mimetic poly-alloy of the Quicksilver scoring algorithm, essentially LiquidMetal. </Schwarzenegger Voice>

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp