Вариант за търсене в MYSQL

sentenello

Registered
Здравейте,
Искам да попитам дали има вариант да направя търсене като примерно в БД имам Atletico Madrid и Bournemouth

и когато търся Atl. Madrid да ми намира реда с Atletico Madrid или пък ако търся AFC Bournemouth да ми намира Bournemouth
 
sentenello каза:
Здравейте,
Искам да попитам дали има вариант да направя търсене като примерно в БД имам Atletico Madrid и Bournemouth

и когато търся Atl. Madrid да ми намира реда с Atletico Madrid или пък ако търся AFC Bournemouth да ми намира Bournemouth
Пробвай така.
PHP:
//String in database.
$string = 'Atletico Madrid';
//String from POST
$testString = 'Atl. Madrid';

$array = explode(' ',$testString);
foreach($array as $partOfName){
	if(stripos($string, $partOfName) !== false ){
		echo 'Има съвпадение! Извеждаш резултата!';
	}	
}
Другият варянт, който вече ти дадох на лични е по-добър но е доста по-тегав за изпълнение, заради изключително големият брой изключения.
 
При PHP имаш готови вградени функции за приблизително търсене - similar_text() и имплементация на алгоритъма levenshtein(). Самия алгоритъм levenshtein е доста интересен http://en.wikipedia.org/wiki/Levenshtein_distance, но за съжаление няма вградена имплементация в MySQL. Но за сметка на това лесно може да го дефинираш като функция там и да го използваш директно при заявката. Примерна (не казвам най-добра) имплементация за MySQL има например тук: http://stackoverflow.com/questions/13909885/how-to-add-levenshtein-function-in-mysql
 
Мисля че намерих някакво решение, но за целта трябва да направя тази заявка правилно.

Код:
$chekid = mysql_query("SELECT * 
FROM  `match` 
WHERE (MATCH (hometeam) AGAINST ('%" . $test . "%' IN BOOLEAN MODE))+ MATCH(awayteam) AGAINST('%" . $test2 . "%' IN BOOLEAN MODE));"or die(mysql_error());

Знам че в момента е пълна каша, но за първи път ползвам MATCH AGAINST и не мога да намеря как точно да направя да ми прави проверки за двете
 

Back
Горе