The King is dead! RIP 2006-2012

Ένα μεγάλο ευχαριστώ σε όλη την παρέα
Περισσότερα στο lexx.gr

Η δικιά σας μηχανή αναζήτησης!

05 May 2008 by PanosJee

solr Πολλές φορές θέλουμε να δημιουργήσουμε τη δικιά μας μηχανή αναζήτησης για τις σελίδες μας και πολλές φορές πολλοί καταφεύγουν σε Custom Google Search αλλά τί γίνεται όταν έχουμε να αναζητήσουμε βάση πεδίων όπως ημερομηνίες, αριθμητικά, boolean πεδία αλλά και τί γίνεται όταν έχουμε γλωσσολογικά φαινόμενα όπως ενικούς/πληθυντικούς, πτώσεις κλπ; Συνήθως κάποιος θα έφτιαχνε ένα custom query αλλά θεωρείται σχετικά κακή πρακτική μιας και αργό είναι και απασχολεί και τη βάση δεδομένων δημιουργώντας dealocks αλλά ούτε μπορούμε να κάνουμε fine tuning στον αλγόριθμο αναζήτησης.

Έχοντας να αντιμετωπίσω όλα αυτά τα προβλήματα για ένα παλιότερο έργο με λίγη αναζήτηση βρήκα τον απόλυτο Indexer, το SOLR. Πρόκειται για ένα έργο του Apache Group που βασίζεται στη μηχανή αναζήτησης Lucene και στην ουσία πρόκειται για μια web based έκδοση αυτής. Πιο αναλυτικά το SOLR είναι ένα web application το οποίο χρειάζεται έναν application server όπως Tomcat, Glassfish, Resin, Jetty για να παίξει. Σε αυτόν κάνουμε post αρχεία σε ΧΜL που περιέχουν τα δεδομένα μας. Προσοχή όμως πρέπει πρώτα να έχει οριστεί η γραμματική του XML αρχείο με τον τύπο και το πλήθος των πεδίων που θέλουμε. Στη συνέχεια το SOLR αναλαμβάνει να κάνει parse τα αρχεία και κατα επιθυμία να εκτελεστούν διάφορα φίλτρα όπως αφαίρεση χαρακτήρων, stopwords και λοιπά λεξολογικά αν το επιθυμούμε και φυσικά αν βρούμε τα κατάλληλα για την γλώσσα μας. Επίσης μας δίνεται η δυνατότητα να δώσουμε επιπλέον βάρος σε κάποιο πεδίο που θεωρούμε πιο σημαντικό. Στη συνέχεια δημιουργείται το index file για αστραπιαία αναζήτηση χωρίς πλέον να χρειάζεται να επισκεφθούμε το δίσκο μας. Τα αποτελέσματα επιστρέφονται σε πολλές μορφές όπως PHP, Ruby, .NET αντικείμενα, XML, JSON και λοιπά... Επιπλέον κάνει caching για μέγιστη απόδοση.

Μικρές Συμβουλές

  • Αν δε τρέχετε ήδη κάποιον application server και δεν έχετε αρκετή μνήμη αλλά ούτε θέλετε την πολυπλοκότητα ενός Tomcat το SOLR έρχεται με τον Jetty, πολύ μικρός και εύκολος στο στήσιμο.
  • Κάνετε τον Jetty να ακούει μόνο στο localhost και κλείστε τον προς τον έξω κόσμο.
  • Στην εφαρμοφή σας δημιουργείστε μια διεπαφή για το SOLR πριν αποθηκεύσετε ένα αντικείμενο στη βάση δεδομένων δημιουργείστε και ένα αντίστοιχο αρχείο XML και στείλτε στο SOLR με τη βοήθεια curl.
  • Αντίστοιχα φτιάχτε μια διεπαφή για να κάνετε queries και να λαμβάνετε αποτελέσματα

Παράδειγμα Eδώ βλέπετε ένα τέτοιo παράδειγμα όπου το SOLR δεν φαίνεται στον έξω κόσμο και ακούει μόνο στο http://127.0.0.1:8080 με AJAX καλείτα μια συνάρτηση PHP που διαμορφώνει ένα κατάλληλο URL με βάση το http://127.0.0.1:8080. Στη συνέχεια το αποτέλεσμα σε JSON επιστρέφεται από την ίδια συνάρτηση και μας εμφανίζει τα αποτελέσματα. Δοκιμάστε την ταχύτητα!