Web Developer's Virtual Library: Encyclopedia of Web Design Tutorials, Articles and Discussions


WDVL Newsletter

Active Server Pages
JSP/Java Servlets
Microsoft SQL Server
Daily Backup
Dedicated Servers
Streaming Audio/Video
24-hour Support    

jobs.webdeveloper.com

Hiermenus


e-commerce
Partner With Us















Developer Channel
FlashKit.com
JavaScript.com
JavaScriptSource
Developer Jobs
ScriptSearch
StreamingMediaWorld
Web Developer's Journal
Web Developer's Virtual Library
WebDeveloper.com
Webreference
Web Hosts
XMLfiles.com

internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers


Make All of Your Data Compatible

July 7, 2000

Next, since you want to make all of your data compatible, not just new data, we need to grab your sticky blobs, and their identifiers out of your database:


<?php

$query = "SELECT blob,identifier FROM your_table";
$result = mysql_query($query);
$number = mysql_numrows($result);
$j = 0;
WHILE ($j < $number) {

/* Your "blob" */
$body = mysql_result($result,$j,"blob");

/* Your "identifier */
$qid = mysql_result($result,$j,"qid");

/* Open the noise words into an array */

$noise_words = file("noisewords.txt");
$filtered = $body;

/* Got to put a space before the first word in the
body, so that we can
recognize the word later
*/

$filtered = ereg_replace("^"," ",$filtered);

/* Now we suck out all the noisewords, and transform
whats left into an array
*/


/* Brought to you by poor ereg coding! */
for ($i=0; $i < count($noise_words); $i++) {
$filterword = trim($noise_words[$i]);
$filtered =
eregi_replace(" $filterword "," ",$filtered);
}

$filtered = trim($filtered);
$filtered = addslashes($filtered);
$querywords = ereg_replace(",","",$filtered);
$querywords = ereg_replace(" ",",",$querywords);
$querywords = ereg_replace("\?","",$querywords);
$querywords = ereg_replace("\(","",$querywords);
$querywords = ereg_replace("\)","",$querywords);
$querywords = ereg_replace("\.","",$querywords);
$querywords = ereg_replace(",","','",$querywords);
$querywords = ereg_replace("^","'",$querywords);
$querywords = ereg_replace("$","'",$querywords);

/* We should now have something that looks like
'Word1','Word2','Word3' so lets turn it into an array
*/

$eachword = explode(",", $querywords);

/* and finally lets go through the array, and place each
word into the database, along with its identifier
*/


for ($k=0; $k < count($eachword); $k++) {
$inputword = "INSERT INTO search_table
VALUES($eachword[$k],$qid)"
;
mysql_query($inputword);
}

/* Get the next set of data */
$j++;
}

?>

That script just handles your old data. You'll want to include a similar function to strip the noisewords out for every time new information comes into your database, through user input, your input, etc... so that your search engine is updated on the fly.

Part 2: Searching the Table

Now you have an easy to-use table of keywords and their associations. How do you query this table? Here's what I do:

First I format each searchterm passed into the script as 'word1','word2','word3' and stick it in a string called $querywords.

Then I throw them into this SQL query:

SELECT count(search_table.word) as score, search_table.qid,your_table.blob
FROM search_table,your_table
WHERE your_table.qid = search_table.qid AND search_table.word
IN($querywords)
GROUP BY search_table.qid
ORDER BY score DESC";

Slapping together a search engine for your database is easy with PHP and MySQL
Slapping together a search engine for your database is easy with PHP and MySQL
Search and Print


Up to => Home / Authoring / Languages / PHP / SearchEngine




Jupiter Online Media: internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and Jupiter Online Media

Jupitermedia Corporate Info


Legal Notices, Licensing, & Permissions, Privacy Policy.

Web Hosting | Newsletters | Tech Jobs | Shopping | E-mail Offers