MySQL search with php!!

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

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

Απάντηση
Άβαταρ μέλους
AAT
Δημοσιεύσεις: 379
Εγγραφή: 23 Αύγ 2007 16:31
Τοποθεσία: Lemesos, Limassol
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από AAT » 16 Δεκ 2007 14:28

index.php (poy an thelete tha yparxei h form gia search):

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

<form action="search.php" method="post">
Search For&#58; <input type="text" name="search">
<input type="submit" value="Search">
</form>
search.php (Opoy tha ginete h search):

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

<?php
$con = mysql_connect&#40;"localhost","someone","*********"&#41;;
if &#40;!$con&#41;
  &#123;
  die&#40;'Could not connect&#58; ' . mysql_error&#40;&#41;&#41;;
  &#125;
mysql_select_db&#40;"my_db", $con&#41;;
$url=$row&#91;'links'&#93;;
$result = mysql_query&#40;"SELECT * FROM search WHERE keywords LIKE %$search%"&#41;;
echo "<table border='1'>
<tr>
<th>Keywords</th>
<th>Links</th>
</tr>";
while&#40;$row = mysql_fetch_array&#40;$result&#41;&#41;
  &#123;
  echo "<tr>";
  echo "<td>" . $row&#91;'keywords'&#93; . "</td>";
  echo "<td> <a href=\"$url\">Click Here!</a> </td>";
  echo "</tr>";
  &#125;
echo "</table>";
mysql_close&#40;$con&#41;;
?>
Code gia to phpmyadmin:

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

CREATE TABLE `search` &#40;
`id` INT NOT NULL AUTO_INCREMENT ,
`keywords` TEXT NOT NULL ,
`links` TEXT NOT NULL ,
PRIMARY KEY &#40; `id` &#41;
&#41; TYPE = MYISAM ;
Guys den ime sigoyros an doylebei peite moy plz!

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από lakritidis » 16 Δεκ 2007 16:00

Καλό το script, αλλά μόνο όταν ο πίνακας search έχει λίγα records (κάτω απο 200,000).

Για περισσότερα records το συγκεκριμένο script σέρνεται. Αν το πεδίο keywords είναι index (δηλαδή btree structure) τότε ο συνολικός χρόνος αναζήτησης αυξάνεται λογαριθμικά με βάση το σύνολο των εγγραφών του table (γιατί το "δεντράκι" γίνεται μεγαλύτερο).

Για textual-hypertextual αναζητήσεις σε μεγάλα document collections χρησιμοποιούμε άλλες τεχνικές και άλλα storage engines, ώστε να γλυτώσουμε το SQl overhead.

Άβαταρ μέλους
AAT
Δημοσιεύσεις: 379
Εγγραφή: 23 Αύγ 2007 16:31
Τοποθεσία: Lemesos, Limassol
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από AAT » 16 Δεκ 2007 17:18

Thanks afto einai gia mikra sites!!

Ena apo ta megala poy exw xrisimopia .search files gia na sozontai ta dedomena mesa kai to php na ta diabazei!

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από cordis » 17 Δεκ 2007 00:22

και πως γεμίζει το table;
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
AAT
Δημοσιεύσεις: 379
Εγγραφή: 23 Αύγ 2007 16:31
Τοποθεσία: Lemesos, Limassol
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από AAT » 17 Δεκ 2007 15:26

Kala bazw kai insert script se ligo!

Άβαταρ μέλους
AAT
Δημοσιεύσεις: 379
Εγγραφή: 23 Αύγ 2007 16:31
Τοποθεσία: Lemesos, Limassol
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από AAT » 17 Δεκ 2007 15:38

insert.php

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

<?php
$con = mysql_connect&#40;"localhost","someone","*********"&#41;;
if &#40;!$con&#41;
  &#123;
  die&#40;'Could not connect&#58; ' . mysql_error&#40;&#41;&#41;;
  &#125;
mysql_select_db&#40;"my_db", $con&#41;;
$sql="INSERT INTO search &#40;keywords, links&#41; VALUES &#40;'$_POST&#91;keyword&#93;', '$_POST&#91;link&#93;'&#41;";
mysql_close&#40;$con&#41;
?>
<form action="insert.php" method="post">
Keyword&#58; <input type="text" name="link" />
Link&#58; <input type="text" name="link" />
<input type="submit" />

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από cordis » 18 Δεκ 2007 00:47

κοίτα και λίγο το security... αν βάλεις κάτι τέτοιο στο internet θα σου κάνουν τον server κόσκινο...
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
AAT
Δημοσιεύσεις: 379
Εγγραφή: 23 Αύγ 2007 16:31
Τοποθεσία: Lemesos, Limassol
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από AAT » 18 Δεκ 2007 14:52

ti security na balw ektos apo form encryption md5, sha1() real escape sting....

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από cordis » 18 Δεκ 2007 14:57

AAT έγραψε: $result = mysql_query("SELECT * FROM search WHERE keywords LIKE %$search%");

$sql="INSERT INTO search (keywords, links) VALUES ('$_POST[keyword]', '$_POST[link]')";
ποια real escapes?
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
AAT
Δημοσιεύσεις: 379
Εγγραφή: 23 Αύγ 2007 16:31
Τοποθεσία: Lemesos, Limassol
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από AAT » 18 Δεκ 2007 15:04

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

<?php
function dbReady&#40;$data&#41; 
	&#123; 
		if &#40;ini_get&#40;'magic_quotes_gpc'&#41;&#41; 
		&#123;
			$data = stripslashes&#40;$data&#41;;
		&#125;
		
		return mysql_real_escape_string&#40;trim&#40;$data&#41;&#41;;
	&#125;
?>

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από cordis » 19 Δεκ 2007 11:57

Ας κάνουμε το παραπάνω integrate μέσα στο πρόγραμμα, γιατί ένας αρχάριος δε θα μπορέσει να το βάλει μόνος του, και μετά το βάζουμε στα scripts.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
AAT
Δημοσιεύσεις: 379
Εγγραφή: 23 Αύγ 2007 16:31
Τοποθεσία: Lemesos, Limassol
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από AAT » 19 Δεκ 2007 19:24

Tha to kanw kalitero abrio kai tha balw ena config gia arxarious.....

silo
Δημοσιεύσεις: 66
Εγγραφή: 22 Οκτ 2006 14:20

MySQL search with php!!

Δημοσίευση από silo » 21 Δεκ 2007 13:27

lakritidis έγραψε:Καλό το script, αλλά μόνο όταν ο πίνακας search έχει λίγα records (κάτω απο 200,000).

Για περισσότερα records το συγκεκριμένο script σέρνεται. Αν το πεδίο keywords είναι index (δηλαδή btree structure) τότε ο συνολικός χρόνος αναζήτησης αυξάνεται λογαριθμικά με βάση το σύνολο των εγγραφών του table (γιατί το "δεντράκι" γίνεται μεγαλύτερο).

Για textual-hypertextual αναζητήσεις σε μεγάλα document collections χρησιμοποιούμε άλλες τεχνικές και άλλα storage engines, ώστε να γλυτώσουμε το SQl overhead.
Mhpws mporeis na anafereis autes ts texnikes kai genikotera na mas dwseis mia sunolikh eikona tou ti prepei na kanei kaneis gia na psaksei mia terastia DB ?

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από lakritidis » 21 Δεκ 2007 15:38

Οι τεχνικές έχουν σχέση με τη δημιουργία του storage, το compression και το indexing αυτού του storage.

Ένα εύπεπτο article είναι αυτό

http://www.eng.auburn.edu/~gilbert/Comp ... -Index.pdf

Δεν αναλύει το πρόβλημα σε όλες του τις διαστάσεις αλλά δίνει μια γενική εικόνα χωρίς να μπλέκει δύσκολες πραμέτρους.

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

MySQL search with php!!

Δημοσίευση από lakritidis » 21 Δεκ 2007 20:52

Σε γενικές γραμμές δε χρησιμοποιούμε databases. Αν πρέπει σώνει και καλά να χρησιμοποιήσεις έτοιμο storage, τότε η Berkeley DB είναι γι'αυτή τη δουλειά. Η Berkeley DB είναι έργο φοιτητών και καθηγητών από το UC Berkeley (το γνωστό sleepycat project) που αγοράστηκε από την Oracle και διατίθεται freeware εδώ:

http://www.oracle.com/database/berkeley-db/index.html

Στα γρήγορα:

1. Σώζουμε τα documents σε ξεχωριστό αρχείο
2. Κάνουμε compress το αρχείο (ο αλγόριθμος είναι δικιά μας επιλογή με κριτήρια την ταχύτητα συμπίεσης-αποσυμπίεσης και το compression ratio).
3. Ρίχνουμε το αρχείο σε ένα repository.
4. Ένα Indexing module τραβάει το αρχείο από το repository και το αποσυμπιέζει
5. Σπάει το document σε όρους (tokenization)
6. Κάνει linguistic processing των όρων (casefolding, synonym matching, stemming)
7. Δημιουργεί ζεύγη {term, document} τα λεγόμενα postings
8. Sortάρει τα postings πρώτα κατά term (sorted runs) και δημιουργεί την Inverted list.
9. Με τον τρόπο αυτό ξέρουμε πλέον ποιες λέξεις (tokens) εμφανίζονται σε ποια documents.
10. Σε ένα query πχ "deep web"
Α. Φέρνουμε την inverted list του token deep
Β¨Φέρνουμε την inverted list του token web
Γ. Κάνουμε Intersect τις inverted lists.
Δ. Εφαρμόζουμε ranking στα αποτελέσματα
Ε. παρουσιάζουμε τα αποτελέσματα στο user.

Η διαδικασία είναι πολύπλοκη και περιπλέκεται τάχιστα αν θέλουμε υποστήριξη "exact phrases", αναζητήσεις με wildcards, αυτόματη διόρθωση λαθών κλπ.

Έχουν γραφεί απειρα articles γι'αυτή τη διαδικασία για εκοικονόμηση μνήμης, δίσκου και CPU και σίγουρα αυτά που γράφω είναι ανεπαρκή.

Απάντηση

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

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

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