nysiis
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

nysiis

The nysiis package provides a JavaScript implementation of the New York State Identification and Intelligence System (NYSIIS) phonetic encoding algorithm. NYSIIS encodes names based on pronunciation, which is helpful in name-matching and searching applications.

Install

npm i nysiis

# or

yarn add nysiis

How to Use

import Nysiis from 'nysiis';

// Create an instance with specific language rules
const nysiis = new Nysiis({
  languageRules: ["english", "igbo", "yoruba", "hindi", "urdu"],
  maxLength: 6,
  strict: true,
});

// Function to demonstrate encoding
function demonstrateEncoding(name: string, description: string = "") {
  try {
    const encoded = nysiis.encode(name);
    console.log(
      `${
        description ? `[${description}] ` : ""
      }Original: "${name}" → Encoded: "${encoded}"`
    );
  } catch (err: unknown) {
    if (err instanceof Error) {
      console.error(`Error encoding "${name}":`, err.message);
    } else {
      console.error(`Error encoding "${name}":`, String(err));
    }
  }
}

// English names
console.log("\n=== English Names ===");
demonstrateEncoding("Watkins", "English");
demonstrateEncoding("Robert Johnson", "English");
demonstrateEncoding("Samantha Williams", "English");

// Yoruba names
console.log("\n=== Yoruba Names ===");
demonstrateEncoding("Olanrewaju", "Yoruba");
demonstrateEncoding("Adebayo", "Yoruba");
demonstrateEncoding("Oluwaseun", "Yoruba");

// Igbo names
console.log("\n=== Igbo Names ===");
demonstrateEncoding("Obinwanne", "Igbo");
demonstrateEncoding("Kpakpando", "Igbo");
demonstrateEncoding("Nwachukwu", "Igbo");

// Hindi names
console.log("\n=== Hindi Names ===");
demonstrateEncoding("Bharat", "Hindi");
demonstrateEncoding("Dhawan", "Hindi");
demonstrateEncoding("Thakur", "Hindi");

// Urdu names
console.log("\n=== Urdu Names ===");
demonstrateEncoding("Sheikh", "Urdu");
demonstrateEncoding("Khan", "Urdu");
demonstrateEncoding("Chaudhry", "Urdu");

// Available languages
console.log("\n=== Available Languages ===");
console.log("Supported languages:", nysiis.getAvailableLanguages());

Reference

@inproceedings{Rajkovic2007,
  author    = {Petar Rajkovic and Dragan Jankovic},
  title     = {Adaptation and Application of Daitch-Mokotoff Soundex Algorithm on Serbian Names},
  booktitle = {XVII Conference on Applied Mathematics},
  editors   = {D. Herceg and H. Zarin},
  pages     = {193--204},
  year      = {2007},
  publisher = {Department of Mathematics and Informatics, Novi Sad},
  url       = {https://jmp.sh/hukNujCG}
}

Additional References

License

This project is licensed under the MIT License.

Copyright

(c) 2024 Finbarrs Oketunji.

Dependents (0)

Package Sidebar

Install

npm i nysiis

Weekly Downloads

27

Version

2.0.0

License

MIT

Unpacked Size

16.6 kB

Total Files

5

Last publish

Collaborators

  • 0xnu