![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 0 Dołączył: 26.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dostalem z home.pl info o tym, że używam nieefektywnego zapytania z LIKE i info o konieczności zamiany jak w temacie.
Coś mi nie idzie jednak ta zamiana, Pierwotny kod wygląda w ten sposób:
Da się to w ogóle tak zamienić, żęby nie używać LIKE jednak wyszukiwanie działało identycznie, tzn bez względu, którą część frazy się w pisze i czy ma ona tylko 2znaki czy więcej ? // Sami założyli mi indexy na bazie, któe podobno są konieczne w tym wypadku: mysql> create fulltext index idx_tytul on artykuly(tytul); Ten post edytował majestiq 17.08.2009, 07:43:48 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 18 Dołączył: 7.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
To jest wyszukiwanie pełnotekstowe. http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html . Najpierw musisz na `tytul` założyć index FULL TEXT.
A później:
Ten post edytował kfc4 17.08.2009, 07:50:30 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 0 Dołączył: 26.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
A czym jest 'tresc' ?
$sql = 'SELECT id,tytul,rozmiar,licznik,dlugosc FROM `'.$tabelka.'` - to jest treść ? Rozumiem, że zamiast 'szukany tekst' mam dać $nazwa ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 18 Dołączył: 7.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie, treść jest treścią, możesz to wywalić, dałem tam to z przyzwyczajenia, bo artykułów szuka się też po treści. A szukany tekst to tak - $nazwa. Masz opisane wszystko w dokumentacji (link wyżej).
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 0 Dołączył: 26.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wygląda, że jest już blisko - nie sypie błędami ale jako wynik wyświetla mi dalszą część skryptu,
która pojawia się w wypadku braku conajmniej jednego wyniku. Może coś zjadłem ? Podam jeszcze raz starą (poprawną wersję) z LIKE i nową nie do końca działającą:
O czym zapomniałem ? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 18 Dołączył: 7.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, zapytanie po lekkich modyfikacjach się wykonuje (po wywaleniu zmiennych) - więc powinno być OK. Zamiast $nazwa daj "'.$nazwa.'"
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 0 Dołączył: 26.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak jak napisałeś i dalej to samo.
Może chodzi o to, że to nie jest powiązane z tym indexem: mysql> create fulltext index idx_tytul on artykuly(tytul); |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 18 Dołączył: 7.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem o co chodzi. Trzeba kogoś mądrzejszego pytać. Odpaliłem painta żeby Ci pokazać, że jednak to działa.
[img=http://img36.imageshack.us/img36/5471/forumphppl.th.jpg] |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 0 Dołączył: 26.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, dziwna sprawa.
Będę próbował dalej. W każdym razie wielkie dzięki za zaangażowanie ! Jeszcze jedno, niby banał, ale nie mogę za pomocą print_r ani var_dump podgladnac co jest w zmiennej:
W wyniku tych zapytań dostaje albo kopię zayptania sql-owego albo resource ale nie moge wyswietlic tego co zostalo pobrane z bazy: string(105) "SELECT id,tytul,rozmiar,licznik,dlugosc FROM `tabela` WHERE `tytul` LIKE '%ddd%' ORDER by tytul LIMIT 1000 " SELECT id,tytul,rozmiar,licznik,dlugosc FROM `tabela` WHERE `tytul` LIKE '%ddd%' ORDER by tytul LIMIT 1000 resource(10) of type (mysql result) Resource id #10 Szukana fraza: ddd / znaleziono 129 rekordów ? |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 18 Dołączył: 7.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
var_dump jest do wyświetlenia rodzaju informacji, a print_r jest do wyświetlania tablic. Musisz dać $tablica = mysql_fetch_array($result), a później print_r($tablica). Tylko nie jestem pewien czy dobrze zapisałem nazwę tej funkcji - musisz sprawdzić w manualu.
PS. Czemu nie używasz MySQLi albo PDO? Są wygodniejsze w użyciu. Ten post edytował kfc4 18.08.2009, 10:29:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:43 |