Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Query Full-Text per funzione di ricerca

    Ciao a tutti! Sto inserendo nel mio sito una funzione di ricerca che va a cercare all'interno di colonne indicizzate con un indice Full-Text in SQL Server 2008.
    Per fare la ricerca ho provato ad utilizzare sia il predicato CONTAINS che il predicato FREETEXT ma nessuno dei due sembra fare al mio caso.

    Esempio: nel db ho un record che nella colonna indicizzata Full-Text ha questo valore 'pro evolution soccer 2012'.
    Con CONTAINS se cerco al frase 'pro evolution soccer 2012' mi esce il risultato che mi aspetto ma se cerco solo 'pro evolution 2012' la query non restituisce niente.
    Con FREETEXT invece se cerco 'pro evolution 2012' mi esce il record che sto cercando ma restituisce anche tutti i record che contengono la parola 'pro', 'evolution' e '2012'. C'è un modo per fare una query full-text "intelligente" in modo che se scrivo 'pro evolution 2012' non si limiti ad effettuare una ricerca per corrispondenza esatta ma vada a vedere anche le parole vicine?
    Lunga vita e prosperità!!
    Usa Mozilla! http://www.mozilla.com

  2. #2
    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"]);
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.