Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    92

    AGAINST e ricerca esatta

    Ciao,
    non trovo soluzione nel manuale e chiedo a voi.

    Devo cercare all'interno di un indice FULLTEXT una o + parole.
    La ricerca deve essere esatta.

    ad esempio cerco

    $cerca = "Cala di Volpe";
    $cerca = "Cala Gonone";

    $qoff = mysql_query("Select campo1, campo2, campo4, campo5, campo6, campo7, campo10, MATCH(campo1, campo4, campo10) AGAINST('".$cerca."' IN BOOLEAN MODE) from z_vacanze where campo13 > '$adesso' and MATCH(campo1, campo4, campo10) AGAINST('".$cerca."' IN BOOLEAN MODE) order by campo13 asc, offerta_id asc");

    scritta così la query, mi trova tutti gli indici che hanno al loro interno almeno una di quelle parole...

    se cerca la modifico così
    $cerca = str_replace(" ", " +", $cerca);

    mi trova tutte quelle che hanno al loro interno tutte le parole (prese singolarmente)

    ma una ricerca ESATTA... quindi le parole nell'ordine esatto, non me la fanno

    Dove sbaglio?
    GRAZIE

  2. #2
    e se utilizzassi il LIKE ? %stringa% ( mi pare che ti riferisca a mysql )

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    92
    Ciao si scusa, sto usando Mysql.

    sto sostituendo tutte le query proprio cassando LIKE perchè match e against dovrebbero essere molto + veloci... cosa che ho effettivamente potuto verificare.

    l'unica cosa che non riesco a fare è con le ricerche esatte di stringhe composte

    grazie

  4. #4
    non conoscendo molto bene queste funzioni nn saprei dirti altro a parte una supposizione, sembra che funzioni come con i motori di ricerca, il "+" lo intermpreta come + parole ma in ordine sparso.. e se sostituissi con "-" ? in genere significa la frase esatta..

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    92
    Grazie

    mi auto rispospondo, mi sembra la soluzione

    $qoff = mysql_query("Select campo1, campo2, campo4, campo5, campo6, campo7, campo10, MATCH(campo1, campo4, campo10) AGAINST('\"".$cerca."\"' IN BOOLEAN MODE) from z_vacanze where campo13 > '$adesso' and MATCH(campo1, campo4, campo10) AGAINST('\"".$cerca."\"' IN BOOLEAN MODE) order by campo13 asc, offerta_id asc");

    tradotto, ho aggiunto delle doppie virgolette all'interno delle virgolette singole...

    AGAINST(' ') con ogni gruppo di parole comprese tra doppie virgolette

    AGAINST(' "cala di volpe", -gonone, +sardegna')

    dovrebbe andare.. provo

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 © 2024 vBulletin Solutions, Inc. All rights reserved.