Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727

    aiuto x modifica motore di ricerca interno DB

    ciao a tutti, ho un motore di ricerca interno al mio DB (non fatto da me...) a cui devo fare un'aggiunta, prima vi incollo il codice che usa con i commenti poi sotto la mia esigenza. Un mega grazie in anticipo a chi mi aiuterà, ecco il codice attuale:

    # la variabile cerca è quella che viene scritta dall'utente, all'inizio viene ottimizzata
    if ($cerca)
    {
    # normalizzo mettendo al posto delle virgole gli spazi
    $cerca = str_replace(",", " ",$cerca);
    # uno o piu spazi diventano uno spazio solo
    $cerca = preg_replace('|\s\s+|', ' ', $cerca);
    # array di termini da cercare
    $keys = explode(" ",$cerca);

    $do_log = true;
    foreach ($keys as $parola)
    {
    # se non vuota
    if ($parola)
    {
    # trasformare le parole maiuscole in minuscole
    $parola = strtolower($parola);
    # per default la parola è buona
    $do = true;
    $length = strlen($parola);
    }
    # non considerare parole più lunghe di 25 lettere
    elseif ($length >= 25)
    {
    $do = false;
    $do_log = false;
    }
    # non considerare parole più lunghe di 4 lettere formate da sole consonanti
    elseif ($length >= 5)

    # è buona la metto newlla where
    if ($do)

    e poi qui sotto parte la query ecc ecc

    Io ho bisogno di inserire nel punto giusto un array che mi TRASFORMI su mia indicazione certe frasi errate scritte dagli utenti in un termine che il mio db capisce, del tipo (lo scrivo qua sotto alla cazzo ma in modo che si capisca)

    array(
    #se l'utente scrive
    'zac e cody sul ponte di comando'
    #trasforma la ricerca in
    => 'cody',
    #se l'utente scrive
    'i personaggi di vattelapesca in bicicletta'
    #trasforma la ricerca in
    => 'vattelapesca'
    );

    come lo devo impostare?
    dove lo devo inserire?
    (ho già fatto vari esperimenti, tutti falliti...)

  2. #2
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    mi sembra che il tuo codice già lo faccia:

    $keys = explode(" ",$cerca);

    che intendi per trasformare?
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    grazie x la risposta
    io ho bisogno di inserire un elenco, che io integrerò a mano ogni volta che serve, un elenco di parole che dicano al php una roba del genere:

    oh php, quando un utente scrive: "i personaggi di vattelapesca in bicicletta" tu lavora come se l'utente avesse scritto "vattelapaesca"

    io mi immaginavo una roba del genere:

    if $cerca = 'i personaggi di vattelapesca in bicicletta' => 'vattelapesca ',
    if $cerca = 'ricette di tagliatelle al salmone' => 'tagliatelle',
    if $cerca = 'oroscopo costellazione dei gemelli' => 'gemelli',

    e così via... (spero di esser stato chiaro...)
    in pratica io devo correggere alcune ricerche fatte male dagli utenti

  4. #4
    Ma lo devi fare a mano??..

    Potresti fare un array e usare la funzione in_array();
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    mi autorispondo
    per ora ho risolto con tanti str_ireplace uno sotto l'altro

    $cerca = str_ireplace("bob der baumeister", "bob",($cerca));

  6. #6
    Forse ti conviene lavorare con 2 array dove:

    nel primo (A1) metti tutte le frasi errate
    nel secondo (A2) tutte le frasi corrette con gli indici corrispondenti al primo array A1

    (se in posizione 0 di A1 hai "bob der baumeister" allora in posizione 0 di A2 avrai "bob" e così via per tutti le altre frasi)

    poi prendi la stringa di input dell'utente, se è presente in A1 estrai il relativo indice in A1 e sostituisci l'input dell'utente con la frase presente in A2 all'indice che hai estratto poco prima

    (se l'utente ha cercato "bob der baumeister" allora ricaverai l'indice 0 da A1 e sostituirai la frase scritta dall'utente con la frase presente in A2 all'indice 0)

  7. #7
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    posta la query del motore di ricerca
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    x Starvation: argh ho capito il concetto ma me li puoi scrivere tu??

    x gasmor:

    if ($do)
    {
    $where .= "
    -- cerco $parola
    nome LIKE '%$parola%' OR categoria LIKE '%$parola%' OR sottocategoria LIKE '%$parola%' OR descrizione LIKE '%$parola%' OR";

    $query = "
    SELECT * FROM
    tabella WHERE 1
    $where
    ";
    if (0)
    echo "<pre>$query</pre>";
    $records_media = mysql_query($query)
    or die("KO: <pre>$query</pre>".mysql_error());
    $num_records = mysql_num_rows($records_media);
    $count = $num_records;

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.