|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2008
Messaggi: 111
|
[php]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 | |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 404
|
Quote:
secondo me dovresti prima sostituire caratteri i strani (tipo -, _, /, \) con uno spazio e poi fare un explode su $film_name e poi inserire le singole parole in AND. qualcosa del tipo: $film_name=str_ireplace("-", " ", $film_name); $temp=explode(" ", $film_name); $query="SELECT * FROM film WHERE name LIKE '%".$temp[0]."%' AND name LIKE '%".$temp[1]."%'"; magari metti la scrittura della query all'interno di un for per poter aggiungere tutte le parole. Questo però non risolve il primo esempio che hai detto tu (Calmocaos). Quì il problema stà nell'individuare le parole che compongono il titolo e trovare una soluzione potrebbe non essere conveniente in termini computazionali ![]() Puoi provare a cercare nella query ogni singola lettera (quindi explode diventa inutile): ...name LIKE '%".$film_name[0]."%' AND name LIKE '%".$film_name[1]."%' AND... usa strlen per determinare la lunghezza complessiva della stringa Ultima modifica di _fefe_ : 22-02-2008 alle 14:34. |
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2008
Messaggi: 111
|
Bè credo che la via più semplice sia con il FULL TEXT, anche perchè poi mi ordina i risultati per attinenza
Comunque ho provato ad eseguire questa query: SELECT * FROM data WHERE MATCH (name) AGAINST ('Die*'); Nel db ho "Die Hard 4". Invece non mi ritorna nulla di nulla. Ultima modifica di leonapster : 22-02-2008 alle 17:14. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
Il Full text e' la strada giusta per il motore di ricerca.
Prova senza l'asterisco
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jan 2008
Messaggi: 111
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:26.