philos Δημοσ. 25 Σεπτεμβρίου 2020 Δημοσ. 25 Σεπτεμβρίου 2020 Καλησπέρα! Ένα προβληματάκι για πιο ειδικούς. Έστω ότι έχουμε έναν πίνακα MySQL (terms) που περιέχει λέξεις και φράσεις (phrase) καθώς και τη σημασία τους (meaning). ... κι ένα κείμενο στην php μεταβλητή $text. Πως μπορώ με χρήση php και MySQL query (χωρίς να χρειαστεί να fetchάρω όλο τον πίνακα με τις λέξεις - φράσεις και να κάνω επεξεργασία με php), να τραβήξω μόνο όλες τις λέξεις - φράσεις που υπάρχουν στην $text από τον πίνακα; Ας πούμε αν μιλάγαμε μόνο για λέξεις, θα έκανα μία WHERE phrase IN (". implode(',', explode(' ', $text)) .") Όμως εδώ έχουμε και φράσεις, ενώ, μια λέξη μπορεί να εμφανίζεται και σε άλλες φράσεις, όχι μόνο σε μία... επίσης έχουμε να ελέγξουμε κάθε πιθανό συνδυασμό εντός μιας πρότασης. Αν ας πούμε το κείμενο ήταν "Λόλα να ένα μήλο κι ένα πορτοκάλι" και οι φράσεις στον πίνακα terms (column phrase😞 μήλο ένα πορτοκάλι πορτοκάλι βερύκοκο ένα μήλο κι ένα μήλο αχλάδι ... θα πρέπει να τα τραβήξω όλα τα πράσινα από τη βάση. Καμιά ιδέα;
panmitz Δημοσ. 25 Σεπτεμβρίου 2020 Δημοσ. 25 Σεπτεμβρίου 2020 (επεξεργασμένο) Μάλλον θα πρέπει να δοκιμάσεις κάποιο query με MATCH AGAINST. Δες εδώ: https://www.w3resource.com/mysql/mysql-full-text-search-functions.php Αυτός εδώ προσπαθεί να κάνει το ίδιο με MySQL + Python, ίσως πάρεις καμιά ιδέα: https://stackoverflow.com/questions/30276448/searching-for-phrase-keywords-in-mysql Δες κι εδώ αν θες: https://stackoverflow.com/questions/9410632/mysql-match-against-example Επεξ/σία 25 Σεπτεμβρίου 2020 από panmitz
Ponous Δημοσ. 25 Σεπτεμβρίου 2020 Δημοσ. 25 Σεπτεμβρίου 2020 (επεξεργασμένο) Δεν είμαι σίγουρος αν κατάλαβα καλά. Στον πίνακα terms θα φυλάς και φράσεις σωστά; Και θες να τραβήξεις όλες τις φράσεις(και άλλα δεδομένα φυσικά) οι οποίες έχουν κάποιες κοινές λέξεις με το text;; Εγώ θα χρησιμοποιούσα το LIKE. Αν πεις where phrase LIKE '%ένα μήλο%' τότε θα σου φερει όλες τις φράσεις που περιέχουν την φράση 'ένα μήλο'. Θα πρέπει να το σπάσεις σε διαφορετικές λέξεις όμως. Ας πούμε το "Λόλα να ένα μήλο" να γίνει "λολα", "να", "ένα", "μήλο" με το explode. Μετά θα πρέπει τώρα να ενώσεις queries για κάθε λέξη της πρότασης. Δλδ, Select * from terms where phrase LIKE '%λέξη%' or where phrase LIKE '%'....... Σωστά κατάλαβα ή άλλο προσπαθείς να λύσεις; 😁 Επεξ/σία 25 Σεπτεμβρίου 2020 από Ponous
mrkra Δημοσ. 25 Σεπτεμβρίου 2020 Δημοσ. 25 Σεπτεμβρίου 2020 Η mysql δεν ειναι one size fits all. Θα χρειαστεις εργαλεια που ειναι προσαρμοσμενα για το σεναριο χρησης που θες. Ριξε μαι ματια στο sphinx. http://sphinxsearch.com/about/sphinx/ 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα