Google like search engine with php

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



What is the proper way to build a dynamic subquery ?

I want to allow the user to use AND, OR, and NOT in his/her query
like $query = "Hola AND Adios, OR  Goodbye, NOT hello"
or..
WHERE (greeting LIKE %Hola% AND greeting LIKE %Adios%) OR (greeting LIKE
%Goodbye%) AND (greeting NOT LIKE %hello%)

I am a bit new at this so any help would be appretiated :)

My Guess:
AND,OR,NOT,'+', and '-' would be extracted from query and put into an array.
So all the operators become $wordOperator[ ]
where:
'hola' : $wordOperator[0] = "AND"
'Adios': $wordOperator[1] = "AND"
'greeting' : $wordOperator[2] = "OR"
'hello' : $wordOperator[3] = "NOT"



// My script in its current state


$query = "Hola Adios" //taken from a GET request

//parse by a space
$searchwords = explode(" ",$query);

$x = 1;
$operator = "AND";
$not_search_word = array('if', 'for', 'in', 'on','and','with');

//taken from a GET request
$searchwords = explode(" ",$query);

foreach ($searchwords as $word) {

   if (!in_array($word,$not_search_word)){  //relevant search term only

   //if we are on the first word...format subquery like this
   if ($x == 1){

         $sql .= ' AND(media.'.$language.' Like "%'.$word.'%"';
         $sql .= ' OR artist.'.$language.' Like "%'.$word.'%"';
         $sql .= ' OR artist.name Like "%'.$word.'%")';
         $x++ ;

//formatting for everything past 1st word
    }else{

$sql .= ' '.$operator.'(media.'.$language.' Like "%'.$word.'%"';
$sql .= ' OR artist.'.$language.' Like "%'.$word.'%"';
$sql .= ' OR artist.name Like "%'.$word.'%")';
}
}
}
$sql .= ' ORDER BY artist.name ASC,';
$sql .= ' media.'.$language.' ASC LIMIT 0,60';


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux