![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 22.01.2008 Skąd: Tarnobrzeg Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Posiadam problem z wyszukiwaniem in boolean mode. Owo wyszukiwanie jest przeznaczone dla formularza jako sugestie. Wygląda ono tak z przykładowymi danymi: Anna jantar zatańczyć z tobą
Nie daje wyników a informacje o piosence zawarte są w bazie po wpisaniu samego anna jantar pokazuje się ta piosenka na pierwszym miejscu. Próbowałem na różne sposoby m. in. standardowo AGAINST('szukana fraza' IN BOOLEAN MODE), AGAINST('+szukana +fraza' IN BOOLEAN MODE), AGAINST('"szukana" "fraza"' IN BOOLEAN MODE) itd ale nie zawsze wyszukiwanie przynosi odpowiednie rezultaty na oko jego poprawność wynosi ok 30%. W bazie jest ponad 500 tyś rekordów więc do PHP nie wrzucę tym bardziej do JS`a żeby wyszukiwanie przez nie. Jeśli ma ktoś jakiś pomysł albo podpowiedź to z chęcią wysłucham. ---------------------- Problem rozwiązałem najprostszym sposobem może się komuś przyda zamieszczę.
1. Skrypt usuwa zbędne znaki i przygotowuje frazę ($text) do zapytania 2. Rozbicie tekstu na tablicę 3. Jeśli text jest jednym słowem zostaje ustawione jedno zapytanie w przeciwnym razie wrzuca się w pętle która dopisuje dalsze części zapytania i jeśli $i != $count wstawia AND. Zapytanie myślę że nie jest optymalne lecz jak najbardziej sprawne. Wynik z profilera. Cytat Queries
SELECT id,name,url_name FROM `music` WHERE (`name` LIKE '%husaria%') AND (`name` LIKE '%bóg%') AND (`name` LIKE '%honor%') AND (`name` LIKE '%ojczyzna%') LIMIT 15 Time 0.000 Ten post edytował adminik 25.12.2009, 02:33:12 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:30 |