Fuzzlogia
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 = ; // => [ 'fuzzy' ]fl; // => [ '最高裁判所' ]fl; // => [ '漢字は難しい' ]fl; // => [ '銀河ヒッチハイクガイド' ]fl;
Features
-
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)
Installation
Using npm:
npm install --save fuzzlogia
In browser
You can use Browserify or Webpack or whatever you want.
API
search(query, bucket, extractor, options)
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; // => [ { firstName: 'John', lastName: 'Mullins'} ]fl;
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// => [ 'git' ]fl
Dictionaries
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.
Tools
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.
TODOs
-
Demo page
-
Performance analysis and tuning
-
Hiragana/katakana/romaji agnostic fuzzy search
Contributing to Fuzzlogia
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.
License
Copyright © 2015 Naoto Yokoyama
Distributed under the MIT license. See the LICENSE file for full details.