ранжирование — PHP Нужна помощь в определении значения ранга за термин, если он соответствует

Приведенный ниже пример кода определяет наилучшее совпадение «идентификатор отдела» и «идентификатор категории» на основе ранга термина для «разных» продуктов.

Проблема, с которой я сталкиваюсь, заключается в попытке определить правильное значение термина (вес) для каждого совпадения, при этом окончательная запись счета не перезаписывается в массиве рангов.

Статические целые числа для значения термина могут привести к дублированию баллов. Я думаю, что float (1,10) или (2,10) будет лучше.

Какие-либо предложения?

Пример кода ниже:

<?php
$string = "EVGA GeForce GTX 980 Ti 6GB 384-Bit GDDR5 PCI Express 3.0 x16 HDCP Ready SLI Support";
$terms_array = array(
'10' => array(
'120' => 'Geforce, NVidia, GTX, Geforce GTX, Radeon, Radeon R7, Radeon R9, AMD, ATI, EVGA, Asus, PNY, MSI, Gigabyte, Sapphire Tech, VisionTek, XFX, SLI, CrossFire, CrossFireX',
'121' => 'term, term, term'
),
'12' => array(
'115' => 'term, term, term',
'181' => 'term, term, term'
),
);

Function Get_Top_Rank($string, $terms_array) {

$result = "";
$ranks = array();
$termvalue = 10;

foreach ($terms_array as $key1 => $val1) {

foreach ($val1 as $key2 => $val2) {
$score = 0;
$terms = explode(",", $val2);

foreach ($terms as $word) {
IF (stripos($string, $word) !== false) {
$score += termvalue;
}
}

$ranks[''.$score.''] = array('key1' => $key1, 'key2' => $key2);

}

}
/*
Example Ranks Result
array(
'130' => array('key1' => '10', 'key2' => '120'),
'20' => array('key1' => '10', 'key2' => '121'),
)
*/

IF (!empty($ranks)) {
krsort($ranks);
$result = reset($ranks);
}

return $result; // array('key1' => '10', 'key2' => '120')

}
?>

0

Решение

Я решил пойти со следующим.

<?php $score += round((strlen($word) * 1.987654321), 8); ?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]