Προς το περιεχόμενο

php search engine - Σελιδοποίηση


clairvoyant

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

Έφτιαξα στα πλαίσια μιας εργασίας, μια μηχανή αναζήτησης. Η μηχανή δεν επιτρεπόταν να χρησιμοποιεί βάση δεδομένων παρά μόνο την τεχνική των inverted file indexes (είναι σημαντικό αυτό για τη συνέχεια). Να μην τα πολυλογώ, όλα πήγαν καλά, η μηχανή λειτούργησε και έφτασα στο σημείο όπου εμφανίζονται τα αποτελέσματα.

 

Ο κώδικας php που έγραψα μου επιστρέφει τα αποτελέσματα σε ένα πολυδιάστατο πίνακα. Αν επιθυμώ να εμφανίσω όλα τα αποτελέσματα με μιας, τότε δεν υπάρχει πρόβλημα. Το πρόβλημα παρουσιάζεται όταν επιθυμώ να εφαρμόσω σελιδοποίηση (pagination). Στο internet βρήκα πολλές έτοιμες php-υλοποιήσεις για σελιδοποίηση, αλλά, αν έχω καταλάβει σωστά, όλες βασίζονται στο γεγονός ότι η μηχανή χρησιμοποιεί πιθανότατα SQL και ουσιαστικά από σελίδα σε σελίδα (π.χ. πηγαίνοντας από τη σελίδα αποτελεσμάτων 1 στη 2) εκτελείται ξανά το αρχικό ερώτημα, με αλλαγή μονάχα στα limits των αποτελεσμάτων που θα εμφανιστούν.

 

Όπως καταλαβαίνετε, εγώ δεν μπορώ να το κάνω αυτό. Η διαδικασία της αναζήτησης είναι χρονοβόρα, λόγω του τρόπου που γίνεται, και μπορεί να χρειαστεί έως και 10 δευτερόλεπτα (χρόνος αποδεκτός για την εργασία). Δεν γίνεται λοιπόν κάθε φορά που ο χρήστης επιθυμεί να δει την επόμενη σελίδα αποτελεσμάτων να απαιτώ να περιμένει τόσο χρόνο ώστε να εκτελεστεί ξανά το ερώτημα.

 

Η απορία μου λοιπόν, συνοψίζοντας:

* Ο χρήστης πληκτρολογεί τις λέξεις αναζήτησης στο αρχείο search_form.php και πατάει υποβολή

* Μπαίνουμε στο αρχείο search_engine.php όπου με POST/GET περνάμε τις μεταβλητές και ξεκινά η αναζήτηση.

* Τα αποτελέσματα βρίσκονται μετά το πέρας της διαδικασίας στον πίνακα $search_results.

* Εμφανίζω, π.χ., τα 10 πρώτα αποτελέσματα.

 

Μετά όμως τι; Χρειάζομαι 2 πράγματα:

============================

Πρώτο και σημαντικότερο, έναν τρόπο ώστε να μην χάσω τα περιεχόμενα του $search_results αν μεταφερθώ σε άλλη σελίδα. Δοκίμασα να το κάνω με global variables αλλά δεν έπιανε. Έχω σκεφτεί να αποθηκεύσω τα περιεχόμενα του πίνακα σε ένα αρχείο, αλλά επειδή η λύση αυτή είναι "μπακάλικη", αναρωτιέμαι αν υπάρχει κάτι καλύτερο.

 

Και, δεύτερον, χρειάζομαι έναν τρόπο μέσα από ένα από html link να μπορώ να περάσω μια μεταβλητή την οποία μετά θα 'πιάνω' με κάποιον τρόπο στη σελίδα που οδηγεί. Π.χ. ένα link της μορφής /search_engine.php?StartFrom=10 και να μπορώ, μπαίνοντας πια στο search_engine.php να διαβάσω κάπως την τιμή του StartFrom. Δοκίμασα να "προσομοιώσω" μόνος μου τη συμπεριφορά της μεθόδου GET αλλά πάλι δεν έπιανε.

 

Οποιαδήποτε βοήθεια ευπρόσδεκτη...

Δημοσ.
Sessions - Object Serialization

:)

 

Ουτε κάν serialization. Ο nemlah είναι άσχετος.

Γράφτο κατευθείαν στο session και παιξε με τα limits στο GET.

Δημοσ.
:) Ευχαριστώ πολύ guys, δεν είχα ασχοληθεί με sessions, υποθέτω ήρθε ο καιρός. Θα το κοιτάξω κι αν έχω κάποιο πρόβλημα θα σας ενημερώσω ;)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...