fuzzyjs
fuzzyjs is a fuzzy search algorithm in javascript.
Usage
test
Tests a query against a source using fuzzy matching
import { test } from 'fuzzyjs'
test('ssjs', 'Set Syntax: JavaScript')
true
const test: (query: string, source: string, opts?: TestOptions) => boolean
type TestOptions = {
caseSensitive: boolean
}
match
Matches a query against a source using fuzzy matching, returns information about the result
import { match } from 'fuzzyjs'
match('ssjs', 'Set Syntax: JavaScript')
{ match: true }
match('ssjs', 'Set Syntax: JavaScript', { withScore: true })
{ match: true, score: 22 }
match('ssjav', 'Set Syntax: JavaScript', { withRanges: true })
{
match: true,
ranges: [
{ start: 0, stop: 1 },
{ start: 4, stop: 5 },
{ start: 12, stop: 15 }
]
}
const match: (query: string, source: string, opts?: MatchOptions) => MatchResult
type MatchOptions = TestOptions & {
strategy?: ScoreStrategy
withRanges?: boolean
withScore?: boolean
}
type MatchResult = {
match: boolean
score?: number
ranges?: Array<MatchRange>
}
Utilities
surround
Surround parts of the string that matched with prefix and suffix
import { match, surround } from 'fuzzyjs'
const result = match('ssjav', 'Set Syntax: JavaScript', { withRanges: true })
surround(
'Set Syntax: JavaScript',
{
result,
prefix: '<strong>',
suffix: '</strong>'
}
)
'<strong>S</strong>et <strong>S</strong>yntax: <strong>Jav</strong>aScript'
const surround: (source: string, options: SurroundOptions) => string
type SurroundOptions = {
result: {
ranges: Array<MatchRange>
}
prefix?: string
suffix?: string
}
Scoring function
A scoring function is a function that given two context, returns a number (either positive or negative) that will be added the the match score.
A leading character is a character that matters more than others.
These are made of capitals and letters follwoing -_ ./\
.
const pushScore: (previousContext: ScoreContext, context: ScoreContext) => number
type ScoreContext = {
currentScore: number
character: string
match: boolean
leading: boolean
}
Link to default strategy: here.
License
fuzzyjs is licensed under MIT License.