Jak szukać dwóch lub więcej zestawionych słów w bazie

How to search two or three words in SQL

Przykład PHP2013-12-08 stopień trudności: łatwy

Prosty przykład wyszukiwania w bazach dwóch lub więcej zestawionych wyrazów.
W czym rzecz, otóż można rozbić ciąg z przykładu poniżej na spacjach, ale wynik wyrzuci nam wszystkie wpisy zawierające słowo "kolor" lub "czerwony" itd... Poniższy przykład pozwoli natomiast znaleźć wyłącznie rekord zawierający zestaw dwóch lub trzech słów występujących w zapytaniu przy sobie co zawęża wyniki. Można go zastosować gdy liczba słów w zapytaniu jest większa niż jedno lub w wyszukiwaniu zaawansowanym.


Nie zawsze to się sprawdzi, ale uznałem że jest warte pokazania jako przykład.


<?
$text 
"test kolor czerwony string php";

echo
"Przykład pierwszy dwa wyrazy:";
echo
"<br />";

//wyciągamy wszystkie zestawienia dwóch wyrazów
preg_match_all('/(?=(\w+\s+\w+))\w+/'$text$matches);

for(
$i=0$i <= count($matches[1]); $i++){
echo 
$matches[1][$i]."<br />";
}

echo
"Przykład drugi trzy wyrazy:";
echo
"<br />";

//warto zwrócić uwagę na patern poszerzony o \s+\w+ co dało nam trzy wyrazy

preg_match_all('/(?=(\w+\s+\w+\s+\w+))\w+/'$text$matches);

for(
$i=0$i <= count($matches[1]); $i++){
echo 
$matches[1][$i]."<br />";
$string $matches[1][$i];
$plus_sql .= " OR pole LIKE '%$string%' ";
}

//wygenerowany poniżej kod dodajemy w zapytaniu sql
echo"$plus_sql";
?>


 







 
close
Strona korzysta z plików cookies. Zastosowane pliki cookie służą jedynie do prowadzenia ogólnych statystyk pozwalających na określenie popularności serwisu.