questo è un metodo che uso io per la ricerca, vedi un pò se può esserti utile...unica cosa è che il db è mysql.
Penso che il tuo problema risieda nel "+" che serve per fare ricerche tra tutti i termini e almeno un termine
codice:
public function cerca($keywords, $tiporicerca="AND", &$coll=false) {
$this->tipoRicerca = $tiporicerca=="AND" ? "+" : "";
$this->campi = "nome, descrizione";
$this->keywords = "";
$exp = explode(" ", $keywords);
foreach( $exp as $e )
$this->keywords .= $this->tipoRicerca.$e." ";
$this->keywords = substr($this->keywords,0,strlen($this->keywords)-1);
$connessione = DatabaseConnection::getConnessione();
$query = " SELECT id, MATCH(".$this->campi.") AGAINST('".$this->keywords."' IN BOOLEAN MODE) AS attinenza FROM tabella g WHERE MATCH(".$this->campi.") AGAINST('".$this->keywords."' IN BOOLEAN MODE) ORDER BY attinenza DESC ";
foreach( $connessione->query($query) as $riga ) {
$coll->addItem($arr,$riga["id"]);
}