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

    Problema con ricerca record in mysql

    Ciao,

    sto facendo un piccolo motore di ricerca di trame di film. Il mio problema è nell'esecuzione della quey

    SELECT * FROM film WHERE name LIKE '%$film_name%' ;

    Nel db, per esempio, ho questo film: "Caos Calmo".

    Se qualcuno cerca "Calmocaos" o "Calmo Caos" o "Caos-calmo" ecc... non trova il record.

    Come fare per ovviare?
    In alternativa conoscete script per realizzare motori di ricerca?

    Avevo pensato al Zend Framework. Fatemi sapere cosa ne pensate?



    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    656
    http://www.phpdig.net/

    questo è uno dei migliori script.

  3. #3
    phpdig dà quanto mi è sembrato è più un web spider. Io dovrei ricercare all'interno del database?

    Cmq non c'è un modo per risolvere il mio problema?

    Faccio prima a pulire tutte le strighe che hanno caratteri speciali(come ".", "-" ecc..) ?

    Esempio str_replace(".", " ", $name);

  4. #4

    Re: Problema con ricerca record in mysql

    Originariamente inviato da leonapster
    SELECT * FROM film WHERE name LIKE '%$film_name%' ;

    Nel db, per esempio, ho questo film: "Caos Calmo".

    Se qualcuno cerca "Calmocaos" o "Calmo Caos" o "Caos-calmo" ecc... non trova il record.
    prova con SOUNDS LIKE, ma leggiti bene il manuale visto che il risultato non è molto prevedibile e che supporta meglio la lingua inglese.

    Codice PHP:
    SELECT FROM film WHERE name SOUNDS LIKE '%$film_name%' ;
    http://dev.mysql.com/doc/refman/5.0/...nction_soundex
    Qualunque imbecille può inventare e imporre tasse. (Maffeo Pantaleoni)

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592

    Re: Problema con ricerca record in mysql

    Originariamente inviato da leonapster
    Nel db, per esempio, ho questo film: "Caos Calmo".

    Se qualcuno cerca "Calmocaos" o "Calmo Caos" o "Caos-calmo" ecc... non trova il record.

    Come fare per ovviare?
    In alternativa conoscete script per realizzare motori di ricerca?

    Avevo pensato al Zend Framework. Fatemi sapere cosa ne pensate?

    grazie
    Anzitutto per creare un motore non ti serve un programma o un famework particolare...
    potresti usare, come qualche purista del forum consiglia , anche notepad...

    Andando sul pratico: ovvio che se uno cerca "Calmocaos" tutto attaccato non può trovare niente... lo stesso google se cerchi Calmocaos ti chiede se vuoi cercare Calmo caos, perchè capisce che hai scritto due parole attaccate...

    ti consiglio comunque di utilizzare le ricerche fulltext
    http://www.webmasterpoint.org/mysql/...base-mysql.asp
    in modo da essere più preciso.. e sopratutto c'è una differenza abissale con LIKE...
    per ora ti saluto..

  6. #6
    ok, ho provato con la FULL TEXT. Ho data al campo name l'attributo di FULL TEXT, ma quando vado ad esequire questa query:

    SELECT * FROM data WHERE MATCH (name) AGAINST ('caos');

    non mi ritorna nulla.

    Nel db ho name = "Caos.calmo".

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    forse è un delirio a causa dell'ora ma forse dovresti usare
    SELECT * FROM data WHERE MATCH (name) AGAINST ('caos*');
    prova perchè non l'ho testata... ma credo funzioni così...
    ma perchè un titolo di un film non è diviso... cioè caos calmo... non caos.calmo
    boh?? vado a nanna che sono cotto...

  8. #8
    Ho provato con un'altro record: "Die Hard 4".

    Solo che non mi ritorna neppure con questo nulla.


    SELECT * FROM data WHERE MATCH (name) AGAINST ('Die*');

    Sto saltando qualche passaggio forse? Sto su un mysql 5

  9. #9
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    hai provato con hard...
    le ricerche fulltext funzionano con parole di almeno 4 caratteri.. questo di default... è ovviamente un parametro modificabile ma ora sono su un portatile in giro e non posso aiutarti..
    cerca comunque in giro...

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.