Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP]Jquery i autocomplete, jak stworzyć optymalną listę podpowiedzi ?
maiq23
post 21.02.2011, 20:33:36
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.02.2011

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


Witam,

Interesuje mnie ten skrypt.
Znalazłem na forum info, że w pliku autocompelete.php trzeba podać wszystkie możliwości,
które będą wyświetlane jako podpowiedź.

Mam bardzo dużą bazę danych i tysiące różnych fraz które są wpisywane.
Jak w takim wypadku stworzyć listę najtrafniejszych podpowiedzi ?
A gdyby dodawać tam każdą frazę, którą wpisał użytkownik to miałoby to sens ?
A może trzeba zapisywać wszystkie wyszukiwania i dodać tam załóżmy tylko te które się powtarzają (czyli popularne),
ale znowu raz użytkownik szukając danej rzeczy wpiszę ją w takiej formie a raz w innej więc to chyba do końca jest dobre.

Jeśli ma ktoś jakieś doświadczenia w tej dziedzinie to proszę o info.

Ten post edytował maiq23 21.02.2011, 21:17:03
Go to the top of the page
+Quote Post
askone
post 21.02.2011, 21:01:33
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


A dlaczego w pliku?? Poczytaj wpierw instrukcję. Z tego co pamiętam skrypt może pobierać dane z różnych źródeł np.: skryptu PHP (a więc bazy MySQL), tablicy javascript.

Pozdrawiam


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
maiq23
post 21.02.2011, 21:15:21
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.02.2011

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


No ok. Pobierać może albo z pliku albo z bazy, ale chodzi mi o jakość podpowiedzi i wysoką wydajność.
Załóżmy, że mam w bazie 1mln rekordów.
Mogę sobie to pobrać bezpośrednio lub wrzucić w plik, ale jaka będzie wtedy obciążenie serwera i szybkość działania ?

Zastanawia mnie jak rozsądnie wybrać te dane, które są najistotniejsze jako podpowiedzi dla usera?
Go to the top of the page
+Quote Post
askone
post 21.02.2011, 21:18:31
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


Musisz ustawić warunek brzegowy tj. długość tekstu jaki musi wprowadzić użytkownik aby skrypt wysłał żądanie do skryptu i tym samym pobrał z bazy dane o wynikach do wyświetlenia. Skrypt jquery autocomplete działa w ten sposób, że jeśli już zacznie pobierać dane to po każdorazowej dodatkowej literze zakres danych jest ograniczany, więc wyniki stają się coraz bardziej wartościowe dla użytkownika.


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
maiq23
post 21.02.2011, 21:30:36
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.02.2011

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


Rozumiem.
To rzeczywiście zawęża listę wyników, ale również użyteczność.
Jeśli np. dopiero po 5 znaku będę szukał podpowiedzi to trochę nie tak jak bym chciał.

Powiedzmy że po każdej literze wpisanej w formularz, chciałbym dostawać 10 najtrafniejszych podpowiedzi.
Tak samo po ilości znaków z zakresu 2-4 a gdy znaków jest 5 skrypt przeszukuje bazę.
Podobnie jest na google.

Gdy wpiszę "m" mam 10 wyników i tak dalej...
Można by kombinować z ręcznym tworzeniem listy podpowiedzi dla każdej (jednej wpisanej) litery, ale gdyby ich było 2-4
to kombinacji jest multum, więc tylko jakiś automat który stworzy 'stałe' listy podpowiedzi dla nich.

Abstrahując od metody, gdyby udało mi się uzyskać listy 10 podpowiedzi dla każdej kombinacji 1-4 znaki, to dałoby się to jakoś podpiąć
pod autocomplete, aby równolegle korzystało ono z plików z danymi i bazy (w przypadku dłuższych stringów) ?
Go to the top of the page
+Quote Post
erix
post 21.02.2011, 21:53:24
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
pod autocomplete, aby równolegle korzystało ono z plików z danymi i bazy (w przypadku dłuższych stringów) ?

No a czemu nie? Robisz prosty cache oparty o mod_rewrite - pozostaje tylko generowanie nazw plików, aby ubezpieczyć, ale załóżmy, że po prostu zamieniasz nazwy liter na jego numeryczne odpowiedniki (odpadają znaki specjalne w nazwach, etc) i zmieniasz system liczbowy na hex. wink.gif

Wówczas wygląda to tak:
- delikwent klepie "ala ma kota"
- dekodujesz każdy znak do jego pozycji w ASCII (aby uprościć, strtolower), wygląda to mniej-więcej tak (nie te kody wink.gif) 03204495983458AF (zaletą czegoś takiego jest to, że kodowanie zawierasz w max 10 linijkach, a nie kilkudziesięciu, jak w przypadku CRC32).
- wysyłasz do serwera żądanie /autocomplete/03204495983458AF.json
- za pomocą reguł rewrite jest sprawdzane, czy plik żądany istnieje: jeśli nie, wykonywany jest odpowiedni kontroler+akcja, które pobierają dane, wysyłają do przeglądarki i przy okazji zapisują do pliku o wspomnianej wcześniej nazwie
- następne żądanie jest już pobierane jako plik statyczny.

Jeśli dodasz do tego nagłówki + śmieciarkę, która zadba o aktualizację cache'u, masz całkiem sprawne rozwiązanie. wink.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
maiq23
post 21.02.2011, 22:02:16
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.02.2011

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


No to chyba sporo mi wyjaśniłeś w kwestii mojego problemu.
Teraz spróbuję przetrawić Twoją wiedzę, bo jest to 'troszkę' bardziej złożone niż zakładałem, ale wygląda sensownie.

Gdyby ktoś miał jeszcze jakieś pomysły, proszę się nie krępować, aczkolwiek pomysł Erixa wydaje się być ciekawym rozwiązaniem smile.gif
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: 6.07.2025 - 21:42