Skip to content

Latest commit

 

History

History
150 lines (91 loc) · 4.21 KB

README.markdown

File metadata and controls

150 lines (91 loc) · 4.21 KB

Fuzzlogia

Build Status Coverage Status Code Climate Dependency Status devDependency Status

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('ぎんが', [ '電気羊', '銀河ヒッチハイクガイド' ]);

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.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 exceeds threshold, the item will not appear in the result.

    Examples:

    // => []
    fl.search('gist', [ 'git' ], null, { threshold: 0 })
    
    // => [ 'git' ]
    fl.search('gist', [ 'git' ], null, { threshold: 1 })

Dictionaries

Fuzzlogia uses the following dictionaries:

Tools

Fuzzlogia contains the following tools:

  • kanjidic.js

    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.