[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сравниваем текст
ssvih
Доброго времени суток!
Стоит задача: Сравнение в схожести текстов
1. Текст лежит в БД
2. Текст приходит POST запросом

Код функции

function compare($vJobID,$vJobDescription,$vJobCheckingData)

{

$query = mysql_query("SELECT vJobDescription,vJobCheckingData FROM dados WHERE vJobID=$vJobID");

if(!$query)
{
exit(mysql_error());
}
$db = mysql_fetch_array($query);

if($vJobDescription == $db['vJobDescription'] and $vJobCheckingData == $db['vJobCheckingData'])
{
echo "Всё ничтяк продолжаем работу )<br />";
}else{

$reset="UPDATE `dados` SET `vJobEnable`='$vJobEnable' WHERE `vJobID`=$vJobID";
$result = mysql_query($reset) or die(mysql_error());
echo "Задание №$vJobID отключено (<br />";

}

}



Код работает на примере 1й строки, если необходимо сравнивать 2 и более строк код срабатывает не правильно, в чем может быть причина?



Спустя 55 минут, 36 секунд (3.10.2012 - 19:34) ssvih написал(а):
Люди подскажите что нибудь в какую сторону рыть?
Понятно одно что проверка не удается если количество строк превышает 1

Спустя 11 минут, 27 секунд (3.10.2012 - 19:45) T1grOK написал(а):
if(!$query)
{
exit(mysql_error());
}

Это я бы заменил на or die(mysql_error()).

А по поводу сравнения. Несколько инструментов Вам в руки echo, print_r, var_dump. Выводим, проверяем, пока не наткнемся на причину.

Спустя 14 минут, 33 секунды (3.10.2012 - 20:00) inpost написал(а):
Что за текст, что за строки? Покажи пример на 1 строку, и на 2 строки, что подразумеваешь... ничего не понял.

Спустя 19 минут, 36 секунд (3.10.2012 - 20:19) ssvih написал(а):
Пример строк для проверки

//
Проверка с пробелами
И проверка с переносом 1
А так же с переносом 2
Ну и конечно же контрольная проверка с переносом №2
//

Это я высылая скрипту и это же лежит в БД

В идеи создание программы - парсер которые смотрит html страницу копирует от туда текст и высылает скрипту на проверку, если текст сходится то все нормально если нет то производим некоторые действия, пока не удалось реализовать первый этап сравнение текстов!

Спустя 1 час, 56 минут, 57 секунд (3.10.2012 - 22:16) ssvih написал(а):
Нашел решения сравнения текста но немного не тем путем как думал, ниже код может кому понадобится, он на моём примере переделаете под себя!

//Тестовый код проверки

function get_shingle($text,$n=3) {
$shingles = array();
$text = clean_text($text);
$elements = explode(" ",$text);
for ($i=0;$i<(count($elements)-$n+1);$i++) {
$shingle = '';
for ($j=0;$j<$n;$j++){
$shingle .= mb_strtolower(trim($elements[$i+$j]))." ";
}
if(strlen(trim($shingle)))
$shingles[$i] = trim($shingle, ' -');
}
return $shingles;
}

function clean_text($text) {
$new_text = eregi_replace("[\,|\.|\'|\"|\\|\/]","",$text);
$new_text = eregi_replace("[\n|\t]"," ",$new_text);
$new_text = preg_replace('/(\s\s+)/', ' ', trim($new_text));
return $new_text;
}

function check_it($first, $second) {
if (!$first || !$second) {
echo "Отсутствуют оба или один из текстов!";
return 0;
}

for ($i=1;$i<2;$i++) {
$first_shingles = array_unique(get_shingle($first,$i));
$second_shingles = array_unique(get_shingle($second,$i));

$intersect = array_intersect($first_shingles,$second_shingles);

$merge = array_unique(array_merge($first_shingles,$second_shingles));

if(count($intersect) == count($merge))
{
echo "Всё ничтяк продолжаем работу )<br />";
}else{
$vJobID = $_POST['vJobID'];
$reset="UPDATE `dados` SET `vJobEnable`='0' WHERE `vJobID`=$vJobID";
$result = mysql_query($reset) or die(mysql_error());
echo "Задание №$vJobID отключено (<br />";
echo "".$_POST['vJobID']."<br />";
echo "".$_POST['vJobDescription']."<br />";
echo "".$_POST['vJobCheckingData']."<br />";

echo "".$second."<br />";

}


//$intersect = array_intersect($first_shingles,$second_shingles);

//$merge = array_unique(array_merge($first_shingles,$second_shingles));

// $diff = (count($intersect)/count($merge))/0.01;

// echo "Количество слов в шингле - $i. Процент схожести - ".round($diff, 2)."%<br />";

}
}


//Конец кода проверки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.