Skip to content

builtinnya/fuzzlogia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A simple Japanese-kanji-reading-aware fuzzy search in JavaScript

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published