![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol/src/String/stringMatching.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.wordLike = wordLike; exports.wordsMatch = wordsMatch; exports.phraseMatch = phraseMatch; exports.phraseLike = phraseLike; exports.exportStringMatchingCode = exportStringMatchingCode; var _int = require("../Math/int"); /** * * @param {String} a * @param {String} b */ function wordLike(a, b) { var m = a.length; var n = b.length; function map(i, j) { return i * (n + 1) + j; } var Q = Array((m + 1) * (n + 1)).fill(0); for (var i = 0; i < m; ++i) for (var j = 0; j < n; ++j) if (a.charAt(i) == b.charAt(j)) { if (Q[map(i + 1, j + 1)]) { if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + 1) Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1; } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1; } else Q[map(i + 1, j + 1)] = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]); return Q[map(m, n)] / (0, _int.harmonicMean)(m, n); } /** * * @param {Array<String>} sq1 * @param {Array<String>} sq2 * @param {number=} matchWordPow */ function wordsMatch(sq1, sq2, matchWordPow) { matchWordPow = matchWordPow === undefined ? 1 : matchWordPow; var m = sq1.length; var n = sq2.length; function map(i, j) { return i * (n + 1) + j; } var Q = Array((m + 1) * (n + 1)).fill(0); var e = 0.0; for (var i = 0; i < m; ++i) for (var j = 0; j < n; ++j) { e = Math.pow(wordLike(sq1[i], sq2[j]), matchWordPow); if (Q[map(i + 1, j + 1)]) { if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + e) Q[map(i + 1, j + 1)] = Q[map(i, j)] + e; } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + e; e = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]); if (e > Q[map(i + 1, j + 1)]) Q[map(i + 1, j + 1)] = e; } return Q[map(m, n)]; } function phraseMatch(a, b, matchWordPow) { matchWordPow = matchWordPow || 1; var spliter = /[\s,-\.+?\_]+/; var notEmp = function (e) { return e.length > 0; }; var sq1 = a.toLowerCase().split(spliter).filter(notEmp); var sq2 = b.toLowerCase().split(spliter).filter(notEmp); var wordsMatchScore = wordsMatch(sq1, sq2); var m = sq1.length; var n = sq2.length; return wordsMatchScore / Math.max((0, _int.harmonicMean)(m, n), 1); } ; function phraseLike(a, b, matchWordPow) { matchWordPow = matchWordPow || 1; var spliter = /[\s,-\.+?\_]+/; var notEmp = function (e) { return e.length > 0; }; var sq1 = a.toLowerCase().split(spliter).filter(notEmp); var sq2 = b.toLowerCase().split(spliter).filter(notEmp); var m = sq1.length; var n = sq2.length; var wordsMatchScore = wordsMatch(sq1, sq2); return wordsMatchScore / Math.max((0, _int.harmonicMean)(m, n), 1); } function exportStringMatchingCode() { return [_int.harmonicMean, phraseLike, phraseMatch, wordLike, wordsMatch].map(f => f + '').join('\n') + '\nvar _stringFormat = {harmonicMean, phraseLike, wordLike, wordsMatch};'; }