![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
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 -------------------- |
|
|
![]()
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? |
|
|
![]()
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.
-------------------- |
|
|
![]()
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) ? |
|
|
![]()
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. ![]() 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 ![]() - 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. ![]() -------------------- ![]() 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! |
|
|
![]()
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 ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 21:42 |