Fuzzlogia is a simple Japanese-kanji-reading-aware fuzzy search library written in JavaScript.
Fuzzlogia is still in the early development stage. The API is unstable.
Some examples:
var fl = require('fuzzlogia');
// => [ 'fuzzy' ]
fl.search('fzzuy', [ 'fuzzy', 'matching' ]);
// => [ '最高裁判所' ]
fl.search('さいこうさいばんしょ', [ '最高裁判所' ]);
// => [ '漢字は難しい' ]
fl.search('かんじ', [ '漢字は難しい' ]);
// => [ '銀河ヒッチハイクガイド' ]
fl.search('ぎんが', [ '電気羊', '銀河ヒッチハイクガイド' ]);
-
Pure (no dependencies)
-
Fuzzy search with ranking (based on # of matched letters, distance, and item length)
-
Japanese Kanji's on/kun/nanori reading aware (using KANJIDIC)
Using npm:
npm install --save fuzzlogia
You can use Browserify or Webpack or whatever you want.
query (type: String
)
A query string.
bucket (type: Array
)
An array of items to search for.
extractor (type: String|Function
, default: identity
)
A function to extract the string to be compared with query
from each item.
If extractor
is a string, it will be used as a property name.
Examples:
// => [ { name: 'John' }]
fl.search('John', [ { name: 'John' } ], 'name');
// => [ { firstName: 'John', lastName: 'Mullins'} ]
fl.search('John', [ { firstName: 'John', lastName: 'Mullins'} ], function(item) {
return item.firstName + ' ' + item.lastName;
});
options (type: Object
, default: see below)
Options to control the behavior. The following options are supported:
-
threshold (type:
Number
, default: 0)If the number of characters in
query
not contained in an item string exceedsthreshold
, the item will not appear in the result.Examples:
// => [] fl.search('gist', [ 'git' ], null, { threshold: 0 }) // => [ 'git' ] fl.search('gist', [ 'git' ], null, { threshold: 1 })
Fuzzlogia uses the following dictionaries:
-
KANJIDIC file contains comprehensive information about 6,355 Japanese kanji specified in the JIS X 0208-1990, including Japanese on/kun/nanori readings (documentation). The file is the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.
Fuzzlogia contains the following tools:
-
Extracts and compiles KANJIDIC into easy-to-use format for Fuzzlogia. See the file for usage. onkundic.js is automatically generated by this tool.
-
Demo page
-
Performance analysis and tuning
-
Hiragana/katakana/romaji agnostic fuzzy search
Pull requests are welcomed.
Please add the relevant tests and ensure that it passes all the tests by executing
npm test
before submitting a pull request.
Copyright © 2015 Naoto Yokoyama
Distributed under the MIT license. See the LICENSE file for full details.