Πολλαπλές αναζητήσεις στην βάση με το FULLTEXT

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6230
Εγγραφή: 30 Νοέμ 2004 03:09

Πολλαπλές αναζητήσεις στην βάση με το FULLTEXT

Δημοσίευση από fafos » 28 Νοέμ 2008 18:22

Με το παρακάτω βοήθημα θα δούμε πως μπορούμε να κάνουμε αναζητήσεις στην βάση μας με διαφορετικές λέξεις-κλειδιά σε διαφορετικά πεδία.

Παράδειγμα:

ας υποθέσουμε ότι ψάχνουμε τις λέξεις "free" και "stuff" με ένα απλό query όπως το παρακάτω:

Κώδικας: Επιλογή όλων

$search = "free stuff";

SELECT * FROM news WHERE title ='$search' OR description='$search'
αυτή η αναζήτηση θα μας προβάλει ΜΟΝΟ τις εγγραφές που περιέχουν ΚΑΙ ΤΙΣ 2 ΛΕΞΕΙΣ και ακριβώς με την ίδια σειρά! Αν η εγγραφή μας περιέχει μόνο μία από τις λέξεις δεν πρόκειται να την προβάλει!


Με το FULLTEXT μπορούμε να ψάξουμε τις εγγραφές που έχουν μία από τις 2 λέξεις ή και τις 2 λέξεις σε όσα πεδία επιθυμούμε!

Το FULLTEXT "δουλεύει" μόνο σε εκδόσεις MySql 3.23.23 και πάνω, και για πεδία τύπου: TEXT, CHAR ή VARCHAR


Καταρχάς πρέπει να έχουμε θέσει στο index τα πεδία που θέλουμε να "δουλέψουν" με FULLTEXT.

Αν δεν έχουν τεθεί από την αρχή τα πεδία σε FULLTEXT μπορούμε να το κάνουμε όπως παρακάτω:

Ανοίγουμε το phpmyadmin και δίνουμε την παρακάτω εντολή στην SQL:

Κώδικας: Επιλογή όλων

ALTER TABLE news ADD FULLTEXT(title,description)
(όπου news το TABLE όπου έχουμε τα πεδία μας και όπου title,description τα πεδία που θέλουμε να "δουλέψουν" ως FULLTEXT)


τώρα το query της αναζήτησης θα πρέπει να είναι κάπως έτσι:

Κώδικας: Επιλογή όλων

SELECT * FROM news WHERE MATCH (title, description) AGAINST ('$search')
αυτό το query θα μας επιστρέψει όλες τις εγγραφές που περιέχουν τις λέξεις "free" ή "stuff" από τα πεδία title ή description...

(μπορούμε να αναζητάμε και πάνω από 2 λέξεις σε περισσότερα πεδία)


Τι ΔΕΝ ψάχνει το FULLTEXT:

1. λέξεις με κάτω από 4 χαρακτήρες
2. Κάποιες κοινές λέξεις τις MySql ( http://dev.mysql.com/doc/refman/5.0/en/ ... words.html )
3. μη ολοκληρωμένες λέξεις (π.χ. η λέξη stuf δεν θα επιστρέψει τίποτα)

αυτά... για προβλήματα ή απορίες just post...

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

Πολλαπλές αναζητήσεις στην βάση με το FULLTEXT

Δημοσίευση από dik_ » 28 Νοέμ 2008 19:02

1. Αυτό αλλάζει από το ft_min_word_len στο my.cnf
3. Το "stuf*" όμως θα επιστρέψει και τα "stufffffff"

Φχαριστούμε ;)

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6230
Εγγραφή: 30 Νοέμ 2004 03:09

Πολλαπλές αναζητήσεις στην βάση με το FULLTEXT

Δημοσίευση από fafos » 28 Νοέμ 2008 19:12

dik_ έγραψε:1. Αυτό αλλάζει από το ft_min_word_len στο my.cnf
3. Το "stuf*" όμως θα επιστρέψει και τα "stufffffff"

Φχαριστούμε ;)
1. den nomizo oti mporoun na exoun oloi prosvash sto my.cnf (mhn tous mperdeuoume kai kanoun kammia patatia ston server) :D

2. den peianei panta (idiaitera sta ellhnika)

parakaloume :D

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πολλαπλές αναζητήσεις στην βάση με το FULLTEXT

Δημοσίευση από vassilism » 29 Νοέμ 2008 01:24

Γεία σου πατρίδα με τα ωραία σου :respect:

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες