Potrzebuję dla pewnego projektu napisac wyszukiwarke tekstową z procentowym sortowaniem trafności.
Jako że jest późna pora, przed snem walnąłem poniższy kodzik:[php:1:d6d9cf3ab1]<?php
$strSentence = 'Gdyby wybory parlamentarne odbyły się w kwietniu, 33-procentowe poparcie uzyskałaby Platforma Obywatelska. Na drugiej pozycji znalazłaby się Samoobrona z 24-procentowym poparciem, a na dalszych miejscach: Socjaldemokracja Polska - 10%, i PiS - 7%.';
$strSearchPhrase = 'Samoobrona Platforma poparcie';
$fltTotalSimilarity = 0.0;
$arrNeedle = explode( ' ', $strSearchPhrase );
$arrHaystack = explode( ' ', $strSentence );
foreach ($arrNeedle as $strNeedle )
{
foreach ($arrHaystack as $strHaystack )
{
similar_text( $strHaystack, $strNeedle, &$fltSimilarity );
$fltTotalSimilarity += $fltSimilarity;
}
}
echo $fltTotalSimilarity.'%<br />';
?>[/php:1:d6d9cf3ab1]Dla podanego tekstu, wynik wynosi 1958.68821553% co jest oczywisice wartością śmieszną.
Wydaje mi się, ze ten wynik powinienem zredukować jakoś przeliczając $fltTotalSimilarity przez ilość słów w obydwu podanych ciągach na przykład.. lub w jakiś inny sposób zredukowąć do zakresu 0% - 100%, ale nic mi nie przychodzi do głowy.
Może Wam coś zaświta?
_________________________________________
Dodam jeszcze, że zastosowanie prostego:[php:1:d6d9cf3ab1]<?php
$strSentence = 'Gdyby wybory parlamentarne odbyły się w kwietniu, 33-procentowe poparcie uzyskałaby Platforma Obywatelska. Na drugiej pozycji znalazłaby się Samoobrona z 24-procentowym poparciem, a na dalszych miejscach: Socjaldemokracja Polska - 10%, i PiS - 7%.';
$strSearchPhrase = 'Samoobrona Platforma poparcie';
$fltTotalSimilarity = 0.0;
similar_text( $strSentence, $strSearchPhrase, &$fltTotalSimilarity );
echo $fltTotalSimilarity.'%<br />';
?>[/php:1:d6d9cf3ab1]Daje wynik 19.5652173913% - może pozostać przy tym prostym rozwiązaniu?