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

    motore di ricerca complesso php

    Buongiorno a tutti, premetto che sono un neofita di php.ho bisogno per la mia attività di un motore di ricerca per selezionare dei professori in base alle loro specializzazioni, regioni, città, ecc.
    ho realizzato un Db con phpmyadmin che mi fa fare una sola selezione, ad esempio se metto la parola che m'interessa, ad esempio farmacista, mi estrapola la singola scheda del professionista.
    A me però serve che nel motore di ricerca si possa ad esempio scrivere farmacista a bologna e mi restituisca un elenco completo di tutti i farmacisti a bologna, meglio se indicando anche un Cap oppure una via, avendo la lista che mi calcoli la distanza dall'indirizzo specificato, partendo da quelli più vicini e man mano più lontani.
    ragazzi non ho la minima idea di come possa far convergere le informazioni.
    Posso creare le tabelle, indicando tutto, anche i prezzi, ecc. Lo so fare...
    ma non so come sia fa per il resto, qualche anima pia potrebbe aiutarmi con grande pazienza?
    Devo necessariamente realizzare questo motore di ricerca ma non ci riesco.
    Grazie a tutti anticipatamente.
    Mario

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    "Il resto", da quanto ho capito, è decisamente complesso.
    Si dovrebbe realizzare un qualcosa che sappia "leggere e capire la stringa", ovvero riconoscere tra le parole quale sia il nome di una città, quale sia il nome di una professione, quale il nome di una via ecc...

    Se vuoi farlo così e non ne sai nulla di PHP direi che sia una cosa impossibile da spiegarti passo passo su un forum.
    Secondo me ti conviene mettere un annuncio nella sezione "Offro lavoro" (seguendo le indicazioni del regolamento di sezione) e fartelo fare da qualcuno.

    Se invece ti va bene avere un form da compilare per la ricerca, con un campo distinto per ogni opzione (professione, città, indirizzo...) allora è più semplice.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    "Il resto", da quanto ho capito, è decisamente complesso.
    Si dovrebbe realizzare un qualcosa che sappia "leggere e capire la stringa", ovvero riconoscere tra le parole quale sia il nome di una città, quale sia il nome di una professione, quale il nome di una via ecc...

    Se vuoi farlo così e non ne sai nulla di PHP direi che sia una cosa impossibile da spiegarti passo passo su un forum.
    Secondo me ti conviene mettere un annuncio nella sezione "Offro lavoro" (seguendo le indicazioni del regolamento di sezione) e fartelo fare da qualcuno.

    Se invece ti va bene avere un form da compilare per la ricerca, con un campo distinto per ogni opzione (professione, città, indirizzo...) allora è più semplice.
    Intanto grazie per la risposta.
    si in effetti l'idea era quella, ma se è così complesso si potrebbe fare anche con un form a più campi che mi estrapolino l'elenco completo.
    Puoi aiutarmi in questo?
    Grazie mille
    mario

  4. #4
    Utente di HTML.it L'avatar di Angarat
    Registrato dal
    Nov 2003
    Messaggi
    157
    partendo dal presupposto che hai una sola tabella con tutti i campi dove ricercare come varchar, io farei così:

    1 i campi varchar della tabella dove vuoi fare le ricerche li convertirei, tramite phpmyadmin, in fulltext (il pulsantino "T" nella colonna delle azioni), la tabella aumenta di dimensione ma velocizzi la query

    2 il form homt di ricerca dovrebbe avere un solo campo input dove poter scrivere quello che si vuole come ad esempio "farmacista a bologna"

    3 php che gestisce la stringa
    Codice PHP:
    //questa funzione pulisce la stringa dalle stringhe di lunghezza minore di 4
    function filtro($val){
            if(
    strlen(trim($val))<4){
                return 
    false;
            } else {
                return 
    true;
            }
    }

    // in questa riga di codice faccio molte cose:
    // esplodo la stringa di ricerca explode(" ", $_POST['espressione'])
    // filtro l'array risultante tramite la funzione filtro array_filter(..., "filtro")
    // elimino gli elementi duplicati dall'array array_unique()
    // ricreo una stringa implode()
    // il risultato finale con una ricerca "farmacista a bologna" è "*farmacista* *bologna*"
    $espressione "*".implode("* *", (array_unique(array_filter(explode(" "$_POST['espressione']), "filtro"))))."*";

    // l'sql da usare nella query
    // "SELECT MATCH .... AGAINST(.... IN BOOLEAN MODE) AS attinenza" ti permette di ottenere i risultati creando un "punteggio" per attinenze milgiori, tramite php puoi anche mostrare il "punteggio" dell'attinenza
    // "WHERE MATCH .... AGAINST(.... IN BOOLEAN MODE)" la vera condizione
    // "ORDER BY attinenza" per ordinare dalla migliore alla peggiore attinenza
    $sql "SELECT *, MATCH( campo1, campo2) AGAINST('".$espressione."' IN BOOLEAN MODE) AS attinenza FROM tabella WHERE MATCH(campo1, campo2) AGAINST('".$espressione."' IN BOOLEAN MODE) ORDER BY attinenza DESC LIMIT 0,20"


    per approfondire http://www.html.it/articoli/un-motor...php-e-mysql-1/

  5. #5
    Ti ringrazio, vedrò se capisco i passaggi della guida e di quanto mi hai indicato.

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.