describe until scoring ancestors

This commit is contained in:
DarkCat09 2024-12-24 21:34:08 +04:00
parent 193349c4fa
commit 1f66b5173f
Signed by: DarkCat09
GPG key ID: BD3CE9B65916CD82

View file

@ -149,10 +149,35 @@ let elementsToScore = [];
*** Часть 2
Скоринг (оценка) найденных полезных элементов
Цикл по elementsToScore
let candidates = [];
18.
18. Если у элемента нет родителя, либо родитель -- не элемент, то пропускаем; не понимаю смысла этой проверки, мы в любом случае искали внутри body, то есть родитель будет; а нода не является элементом и при этом может быть родителем (содержать элементы) только когда она -- документ; ну ладно
19. Если длина текста элемента меньше 25, то пропускаем
20. Ищем предков элемента (родителя, затем родителя родителя) максимум до 5 уровня, записываем в массив ancestors
21. Если в ancestors оказалось 0 элементов, пропускаем; аналогично -- не понимаю смысла проверки, если уже из пункта 18 мы точно знаем, что родитель есть
let contentScore = 1;
// Инициализируем переменную с баллами полезности элемента, базовое значение -- единица
22. Ищем количество запятых в тексте + 1 и прибавляем к contentScore
Примечание: выше сказано про +1 для полного соответствия этого описания с алгоритмом -- там делают .split по запятым и прибавляют длину массива к contentScore, а если вместо сплита матчить строку по запятым (искать вхождения), то результат будет на единицу меньше
Примечание: запятые бывают разные, в ридабилити применяют регулярку:
/\u002C|\u060C|\uFE50|\uFE10|\uFE11|\u2E41|\u2E34|\u2E32|\uFF0C/g
23. За каждые 100 символов текста прибавляем по баллу, максимум 3 раза (100-199 => 1; 200-299 => 2; 300-inf => 3; 400 => 3; 100500 => 3)
24. Цикл по массиву ancestors (пункт 20), содержащему предков элемента -- сначала родителя, потом родителя родителя, и так до 5-й "глубины":
24.1. Если текущая нода -- не элемент, либо у неё нет родителя, либо её родитель -- не элемент, то пропускаем
24.2. // line 1240
***
*** Часть 3