» Jak znaleźć ciąg znaków w jednej tabeli... (MySQL) ?

0

Jak optymalnie przeszukać jedną tabele w poszukiwaniu ciągu znaków? Chodzi mi tu nie tylko o jedno słowo, ale i kilka? Metoda %like% raczej odpada? Używam SQLite do połączenia z data base MySQL.

1

No i czemu like nie pasuje? Wiesz że warunki mozna ORować?

0

ORować, ale w jaki sposób masz na myśli? Bo chodzi mi o taki szukanie:

  1. szuka nawet do kilku słów,
  2. te słowa nie muszą być obok siebie,
  3. przeszukuje wszystkie kolumny po za id w jednej tabeli,
  4. zapytanie jest zaptymalizowane.

Na razie mam to:

	$u->select("SELECT `opis` FROM `kwatery` WHERE `opis` LIKE '%$szukaj%'");
	$u->select("SELECT `opis` FROM `kwatery` WHERE `opis` LIKE '%$szukaj%' OR `naglowek` LIKE '%$szukaj%'");
1
  $szukaj_a = explode(' ', $szukaj);
  if (count($szukaj_a)) {
    $kolumny = array('opis', 'naglowek');
    $warunki = array(); // to zostaw puste
    foreach ($szukaj_a as $a) {
      foreach ($kolumny as $k) {
        $warunki[] = "`$k`LIKE '%$a%'";
      }
    }
    $warunki_s = implode(' OR ', $warunki);
    $u->select("SELECT `opis` FROM `kwatery` WHERE $warunki_s");
  }

Jak nic nie walnąłem głupiego to będzie działać

0

ok, dodałem coś takiego:

 
	for($i=0; $i < $ile; $i++) //3
	{
		$wynik[$i]['naglowek'];	
		$wynik[$i]['opis'];
			for($j=0; $j < count($szukaj_a); $j++)	//2
			{

                                $wynik[$i]['naglowek'] = str_ireplace($szukaj_a[$j], '<font color="red"><b>' . $szukaj_a[$j] . '</b></font>', $wynik[$i]['naglowek']);
                                $wynik[$i]['opis'] = str_ireplace($szukaj_a[$j], '<font color="red"><b>' . $szukaj_a[$j] . '</b></font>', $wynik[$i]['opis']);
			}
	} 

Wyglądać ładnie może nie wygląda, ale działa, później napiszę to ładnie.

Mam teraz takie pytanie:
Jak zrobić, żeby ładnie mi powycinało ilość słów z tekstu? Mam np opis na 100słów. I np 3 razy zapytanie znalazło pasujące słowo do szukanego w tym opisie. Jak ładnie teraz wyciąć z tych 100słów tylko te które nas interesują? jak one są np porozrzucane wszędzie ? :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1