yoastseo
Version:
Yoast client-side content analysis
47 lines (45 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _getAllWordsFromTree = _interopRequireDefault(require("../../../languageProcessing/helpers/word/getAllWordsFromTree"));
var _keyphraseLengthFactor = _interopRequireDefault(require("./keyphraseLengthFactor.js"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* Calculates a recommended keyphrase count for a paper's text. The formula to calculate this number is based on the
* keyphrase density formula.
*
* @param {Paper} paper The paper to analyze.
* @param {number} keyphraseLength The length of the focus keyphrase in words.
* @param {number} recommendedKeyphraseDensity The recommended keyphrase density (either maximum or minimum).
* @param {string} maxOrMin Whether it's a maximum or minimum recommended keyphrase density.
* @param {function} customGetWords A helper to get words from the text for languages that don't use the default approach.
*
* @returns {number} The recommended keyphrase count.
*/
function _default(paper, keyphraseLength, recommendedKeyphraseDensity, maxOrMin, customGetWords) {
const wordCount = customGetWords ? customGetWords(paper.getText()).length : (0, _getAllWordsFromTree.default)(paper).length;
if (wordCount === 0) {
return 0;
}
const lengthKeyphraseFactor = (0, _keyphraseLengthFactor.default)(keyphraseLength);
const recommendedKeyphraseCount = recommendedKeyphraseDensity * wordCount / (100 * lengthKeyphraseFactor);
/*
* The recommended keyphrase count should always be at least 2,
* regardless of the keyphrase density, the word count, or the keyphrase length.
*/
if (recommendedKeyphraseCount < 2) {
return 2;
}
switch (maxOrMin) {
case "min":
// Round up for the recommended minimum count.
return Math.ceil(recommendedKeyphraseCount);
default:
case "max":
// Round down for the recommended maximum count.
return Math.floor(recommendedKeyphraseCount);
}
}
//# sourceMappingURL=recommendedKeywordCount.js.map