Searching the database for consecutive words

Hello, I posted this message in to a few forums but no one could help me . Maybe I will get lucky here . I want to make a search in my PHP database and return all rows that contain some keywords, one after another, in any order (or at least half of them, one after another) .
I want also to take words that has the key in them .
If we have the word “good” , the word “goodness” will be ok and also “nogood” will be ok .

I will explain more below .
I have an array with keywords (the array can have maximum 6 elements) . So :
key[1]=“hello”
key[2]=“how”
key[3]=“snow”
key[4]=“dancing”
key[5]=“golf”

I need a script that will search and return all rows that contain at least 3 (5/2 majored to the largest is 3) of this keywords, one after another, in any order . So something like all combinations :

Here hello how snow is fine -> good
When dancing gold snow how is it ? -> good
how snow dancing golf is at the mountain . -> good
I am wondering how snowing dancing golf is. -> good
Fred says hellow snow -> not good (only 2 words)

So far I am using :

$mysql_str='%';
for($i=0;$i<$no;$i++)
	$mysql_str=$mysql_str.'%'.$keyword[$i];
$mysql_str=$mysql_str.'%';

->this is to add all words in a string for the mysql query

$result=mysql_query("SELECT *FROM `articole2` WHERE `continut` LIKE '$mysql_str' ORDER BY RAND() LIMIT 1001;");

->this is to return the results .

The problem is that my script returns results that have all words, anywhere in the body of the row . I need it to work only in consecutive order . Is it possible ?
I know this is hard … but maybe someone can help . Thank you in advance

sry havn’t seen ur post earlyer

u have to search for each word on it’s own, but instead of using add u may add the values (as i know MySQL is converting true to 1 automaticly, havn’t tryed)

[php]
if($no) $mysql_str=’ (continut LIKE “%’.$keyword[0].’%”)’;
for($i=1;$i<$no;$i++)
$mysql_str.=’ + (continut LIKE “%’.$keyword[$i].’%”)’;
$mysql_str.=’ >= '.ceil($no/2);
[/php]

[php]
$result=mysql_query(“SELECT *FROM articole2 WHERE $mysql_str ORDER BY RAND() LIMIT 1001;”);
[/php]

this should create something like

SELECT *FROM `articole2` WHERE  + (`continut` LIKE "%hello%")  + (`continut` LIKE "%how%")  + (`continut` LIKE "%snow%")  + (`continut` LIKE "%dancing%")  + (`continut` LIKE "%golf%") >= 3  ORDER BY RAND() LIMIT 1001;

i don’t know if this will work, but i hope it’s pointing u in the right direction

Sponsor our Newsletter | Privacy Policy | Terms of Service