diacritic-search-ts
Version:
A Node.js/TypeScript package for diacritic-insensitive search using regex
58 lines (57 loc) • 4.93 kB
JavaScript
// example.ts
import { diacriticInsensitiveTransform, searchDiacriticInsensitive, searchMultiWordDiacriticInsensitive, // Importujeme novú funkciu
slovakDiacriticMap, czechDiacriticMap, slovakCzechDiacriticMap } from './index.js';
async function runExample() {
console.log("--- Diacritic Insensitive Search Example (Vylepšené) ---");
// --- Príklad 1: Normalizácia vstupu a vylepšené escapovanie ---
console.log("\n### Normalizácia vstupu a escapovanie ###");
const queryWithDiacritic = "Košice";
const transformedQueryDiacritic = diacriticInsensitiveTransform(queryWithDiacritic, slovakDiacriticMap);
console.log(`Query s diakritikou "${queryWithDiacritic}" -> Transformed: "${transformedQueryDiacritic}"`); // Očakávané: K[o,ó,ô]šice
const queryWithSpecialChars = "file.txt";
const transformedQuerySpecial = diacriticInsensitiveTransform(queryWithSpecialChars, slovakDiacriticMap);
console.log(`Query so špeciálnymi znakmi "${queryWithSpecialChars}" -> Transformed: "${transformedQuerySpecial}"`); // Očakávané: file\.txt
const queryWithSpecialAndDiacritic = "Město.txt";
const transformedQueryMixed = diacriticInsensitiveTransform(queryWithSpecialAndDiacritic, slovakCzechDiacriticMap);
console.log(`Query mix "${queryWithSpecialAndDiacritic}" -> Transformed: "${transformedQueryMixed}"`); // Očakávané: M[e,é,ě]sto\.txt
// --- Príklad 2: Slovenská diakritika ---
console.log("\n### Slovenská diakritika ###");
const slovakText = "Chcem ísť do Bratislavy, do Múzea.";
const slovakQuery1 = "bratislava";
const slovakQuery2 = "ist";
const slovakQuery3 = "muzeum"; // Hľadá "Múzea"
console.log(`Text: "${slovakText}"`);
console.log(`Vyhľadávam "${slovakQuery1}" (SK): ${searchDiacriticInsensitive(slovakText, slovakQuery1, slovakDiacriticMap)}`); // true
console.log(`Vyhľadávam "${slovakQuery2}" (SK): ${searchDiacriticInsensitive(slovakText, slovakQuery2, slovakDiacriticMap)}`); // true (pre "ísť")
console.log(`Vyhľadávam "${slovakQuery3}" (SK): ${searchDiacriticInsensitive(slovakText, slovakQuery3, slovakDiacriticMap)}`); // true (pre "Múzea")
// --- Príklad 3: Česká diakritika ---
console.log("\n### Česká diakritika ###");
const czechText = "Potřebuji zajít do Plzně na oběd, v Přerově.";
const czechQuery1 = "potrebuji";
const czechQuery2 = "plzne";
const czechQuery3 = "obed";
const czechQuery4 = "prerov"; // Hľadá "Přerově"
console.log(`Text: "${czechText}"`);
console.log(`Vyhľadávam "${czechQuery1}" (CZ): ${searchDiacriticInsensitive(czechText, czechQuery1, czechDiacriticMap)}`); // true (pre "Potřebuji")
console.log(`Vyhľadávam "${czechQuery2}" (CZ): ${searchDiacriticInsensitive(czechText, czechQuery2, czechDiacriticMap)}`); // true (pre "Plzně")
console.log(`Vyhľadávam "${czechQuery3}" (CZ): ${searchDiacriticInsensitive(czechText, czechQuery3, czechDiacriticMap)}`); // true (pre "oběd")
console.log(`Vyhľadávam "${czechQuery4}" (CZ): ${searchDiacriticInsensitive(czechText, czechQuery4, czechDiacriticMap)}`); // true (pre "Přerově")
// --- Príklad 4: Vyhľadávanie Viacerých Slov ---
console.log("\n### Vyhľadávanie Viacerých Slov ###");
const multiWordText = "Chcem navštíviť hlavné mesto Slovenska, Bratislavu.";
const multiWordQuery1 = "hlavne mesto slovenska";
const multiWordQuery2 = "Navštívit Bratislavu"; // Test s diakritikou v dopyte
const multiWordQuery3 = "mesto slovenska"; // Zhoduje sa
const multiWordQuery4 = "mesto slovensko"; // Nezhoduje sa presne (kvoli 'a' na konci)
const multiWordQuery5 = "slovenska hlavne"; // Zlé poradie
console.log(`Text: "${multiWordText}"`);
console.log(`Vyhľadávam "${multiWordQuery1}" (SKCZ): ${searchMultiWordDiacriticInsensitive(multiWordText, multiWordQuery1, slovakCzechDiacriticMap)}`); // true
console.log(`Vyhľadávam "${multiWordQuery2}" (SKCZ): ${searchMultiWordDiacriticInsensitive(multiWordText, multiWordQuery2, slovakCzechDiacriticMap)}`); // true
console.log(`Vyhľadávam "${multiWordQuery3}" (SKCZ): ${searchMultiWordDiacriticInsensitive(multiWordText, multiWordQuery3, slovakCzechDiacriticMap)}`); // true
console.log(`Vyhľadávam "${multiWordQuery4}" (SKCZ): ${searchMultiWordDiacriticInsensitive(multiWordText, multiWordQuery4, slovakCzechDiacriticMap)}`); // false (lebo "slovensko" != "Slovenska")
console.log(`Vyhľadávam "${multiWordQuery5}" (SKCZ): ${searchMultiWordDiacriticInsensitive(multiWordText, multiWordQuery5, slovakCzechDiacriticMap)}`); // false (zlé poradie)
const sentenceCZ = "Potřebuji zajít do Plzně.";
console.log(`\nText: "${sentenceCZ}"`);
console.log(`Vyhľadávam "zajit plzne" (CZ): ${searchMultiWordDiacriticInsensitive(sentenceCZ, "zajit plzne", czechDiacriticMap)}`); // true
}
runExample().catch(console.error);