Μηχανή Αναζήτησης

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

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

Απάντηση
rew7ind
Δημοσιεύσεις: 2
Εγγραφή: 13 Αύγ 2013 00:33

Μηχανή Αναζήτησης

Δημοσίευση από rew7ind » 13 Αύγ 2013 00:39

Παιδια καλησπερα και καλως σας βρηκα. Μιας και ειμαι νεος στο χωρο του web development εφτιαξα το παρακατω script για μια μηχανη αναζητησης απο μια βαση δεδομενων. Το ερωτημα μου ειναι το εξης. ΛΕιτουργει μονο για μια λεξη, οταν βαζω και δευτερη μου βγαζει οτι δεν βρεθηκαν αποτελεσματα. Ξερει καποιος να με βοηθησει? ΠΑραθετω και τον κωδικα για οποιαδηποτε συμβουλη.

<?php
mysql_connect("localhost","root") or die("could not connect");
mysql_select_db("myshoptest") or die("could not find db!");
$output = '';
//collect
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);

$query = mysql_query("SELECT * FROM products WHERE tittle LIKE '%$searchq%' OR keywords LIKE '%$searchq%'") or die ("could not search!");
$count = mysql_num_rows($query);
if ($count == 0) {
$output = 'Δεν βρέθηκαν αποτελέσματα που να ταιριάζουν με τον όρο αναζήτησης!';
}else {
while($row = mysql_fetch_array($query)) {
$tittle = $row['tittle'];
$url = $row['url'];

$output .=' '.$tittle.'';
}
}
}
?>

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Μηχανή Αναζήτησης

Δημοσίευση από gvre » 13 Αύγ 2013 09:21

Ρίξε μια ματιά στα παρακάτω. Για full-text σε innodb θα χρειαστείς mysql 5.6 ή νεότερη.

http://www.mysqltutorial.org/mysql-full ... earch.aspx
http://www.mysqlperformanceblog.com/201 ... e-queries/

Υ.Γ. Το mysql extension της php είναι deprecated από την έκδοση 5.5.0 και θα αφαιρεθεί μελλοντικά. Είναι προτιμότερο να χρησιμοποιήσεις το pdo ή το mysqli.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Μηχανή Αναζήτησης

Δημοσίευση από alou » 13 Αύγ 2013 10:30

Αν δεν κάνω λάθος, το regex που χρησιμοποιείς αφαιρεί το white space (και άλλα που ίσως χρειάζονται) οπότε είναι λογικό να μη βρίσκει κάτι γιατί ενώνεις τις λέξεις.

Για να το επιβεβαιώσεις και να βλέπεις κάθε φορά για τι ψάχνεις, άλλαξε το

$output = 'Δεν βρέθηκαν αποτελέσματα που να ταιριάζουν με τον όρο αναζήτησης: '. $searchq;

Εναλλακτικά:
[^0-9a-z ]
ή
[^0-9a-zA-Z ]
για να κρατάς και τα κεφαλαία

Απάντηση

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

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

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