string-similarity-plus
Version:
String similarity calculation with enhanced special character normalization
40 lines (32 loc) • 1.48 kB
JavaScript
const { calculateStringSimilarity, findSimilarStrings } = require('./index');
// Test basic functionality
console.log('Basic similarity tests:');
console.log('-----------------------');
const testCases = [
["<h2>2. 無限供應肉類火鍋放題 - 牛摩</h2>", "<h2>2. 無限供應肉類火鍋放題 – 牛摩</h2>"] // CJK example
];
// Test the similarity
testCases.forEach(([str1, str2]) => {
const similarity = calculateStringSimilarity(str1, str2);
console.log(`"${str1}" vs "${str2}": ${similarity.toFixed(2)}%`);
});
// Test findSimilarStrings
console.log('\nFinding similar strings:');
console.log('------------------------');
const content = [
"<h2>2. 無限供應肉類火鍋放題 – 牛摩</h2>",
"<h2>Some other content</h2>",
"<h2>無限供應火鍋放題牛摩</h2>",
];
const searchString = "<h2>2. 無限供應肉類火鍋放題 - 牛摩</h2>";
const matches = findSimilarStrings(searchString, content, 80);
console.log(`Search string: "${searchString}"`);
console.log('Matches:');
matches.forEach(match => console.log(`- "${match}"`));
// Test edge cases
console.log('\nEdge cases:');
console.log('-----------');
console.log(`Empty strings: ${calculateStringSimilarity("", "")}%`);
console.log(`One empty string: ${calculateStringSimilarity("test", "")}%`);
console.log(`Identical strings: ${calculateStringSimilarity("test", "test")}%`);
console.log(`Completely different: ${calculateStringSimilarity("abcdef", "ghijkl")}%`);