Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukiwanie pełno tekstowe
piotrooo89
post 3.04.2009, 20:30:03
Post #1


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Mam taki malutki problem. Mam tabele np:

id | nazwa
1 | jakaś pierwsza zmienna
2 | druga zmienna
3 | no i rzecz jasna 3 zmienna
4 | coś zupełnie innego

i teraz stosuje wyszukiwanie pełno tekstowe (full text)

  1. 'SELECT * FROM tabela WHERE MATCH (nazwa) AGAINST ('zmienna')';


wszystko pięknie ładnie gdy wpisze cały napis zmienna. jednak ja chce aby nawet jak się wpisze zmien wyświetlał rekordy w których ten ciag się znajduje. próbowałem z % ale jakoś kaprawo działa. jest na to jakiś patent?


--------------------
Go to the top of the page
+Quote Post
K4mil94
post 3.04.2009, 20:38:57
Post #2





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


Gdy pisałem szukajke dałem %$zmienna%, nie wiem dlaczego u Ciebie nie działa smile.gif
Go to the top of the page
+Quote Post
piotrooo89
post 3.04.2009, 20:42:14
Post #3


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




u mnie zapytanie wygląda tak:

  1. <?php
  2. $sz = 'SELECT * FROM '.$SQL_FROM.' WHERE MATCH ('.$SQL_WHERE.') AGAINST ("%'.$searchq.'%")';
  3. ?>


i podkreślam wyszukuje poprawnie ale tylko po całych wyrazach, jak wpisze np 2 litery wyrazu to nie wyświetla.


--------------------
Go to the top of the page
+Quote Post
K4mil94
post 3.04.2009, 20:44:22
Post #4





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


A próbowałeś bez MATCH i AGAUINST ? Tylko WHERE nazwa='%$zmienna%'; Prymitywnie ale może działać.
Go to the top of the page
+Quote Post
piotrooo89
post 3.04.2009, 20:47:22
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ale ze mnie dupa...

robiłem

  1. <?php
  2. LIKE "'.$searchq.'%"
  3. ?>


zamiast

  1. <?php
  2. LIKE "%'.$searchq.'%"
  3. ?>


chyba już zmęczenie materiału. sciana.gif


--------------------
Go to the top of the page
+Quote Post
ptb
post 29.04.2009, 14:16:47
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 22.04.2009

Ostrzeżenie: (0%)
-----


Moim zdaniem, tak będzie lepiej:


<?php
$sz = "SELECT * FROM tab WHERE MATCH (pole) AGAINST ('str*, st1*' IN BOOLEAN MODE)";
?>

Jest to dopasowanie dla ciągu zaczynającego się od "str" bądź "st1" - nie ma ograniczeń ilości znaków.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.07.2025 - 13:24