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

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

Δημοσ.

Καλησπέρα! :)

Ένα προβληματάκι για πιο ειδικούς.

Έστω ότι έχουμε έναν πίνακα MySQL (terms) που περιέχει λέξεις και φράσεις (phrase) καθώς και τη σημασία τους (meaning).

... κι ένα κείμενο στην php μεταβλητή $text.

Πως μπορώ με χρήση php και MySQL query (χωρίς να χρειαστεί να fetchάρω όλο τον πίνακα με τις λέξεις - φράσεις και να κάνω επεξεργασία με php), να τραβήξω μόνο όλες τις λέξεις - φράσεις που υπάρχουν στην $text από τον πίνακα;

Ας πούμε αν μιλάγαμε μόνο για λέξεις, θα έκανα μία WHERE phrase IN (". implode(',', explode(' ', $text)) .")

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

Αν ας πούμε το κείμενο ήταν "Λόλα να ένα μήλο κι ένα πορτοκάλι" και οι φράσεις στον πίνακα terms (column phrase😞

μήλο

ένα πορτοκάλι

πορτοκάλι

βερύκοκο

ένα μήλο

κι ένα μήλο

αχλάδι

 

... θα πρέπει να τα τραβήξω όλα τα πράσινα από τη βάση. ;)

Καμιά ιδέα; :)

 

Δημοσ. (επεξεργασμένο)

Μάλλον θα πρέπει να δοκιμάσεις κάποιο 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

Επεξ/σία από panmitz
Δημοσ. (επεξεργασμένο)

Δεν είμαι σίγουρος αν κατάλαβα καλά. Στον πίνακα terms θα φυλάς και φράσεις σωστά; Και θες να τραβήξεις όλες τις φράσεις(και άλλα δεδομένα φυσικά) οι οποίες έχουν κάποιες κοινές λέξεις με το text;;

Εγώ θα χρησιμοποιούσα το LIKE. Αν πεις

where phrase LIKE '%ένα μήλο%' 

τότε θα σου φερει όλες τις φράσεις που περιέχουν την φράση 'ένα μήλο'. Θα πρέπει να το σπάσεις σε διαφορετικές λέξεις όμως. Ας πούμε το "Λόλα να ένα μήλο" να γίνει "λολα", "να", "ένα", "μήλο" με το explode. Μετά θα πρέπει τώρα να ενώσεις queries για κάθε λέξη της πρότασης. Δλδ,

Select * from terms where phrase LIKE '%λέξη%' or where phrase LIKE '%'.......

Σωστά κατάλαβα ή άλλο προσπαθείς να λύσεις; 😁

Επεξ/σία από Ponous

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...