Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777

    match against e date formato testo

    salve a tutti
    avevo costruito un piccolo motore di ricerca con query che veniva interrogato tramite match against
    ho indicizzato fulltext i vari campi in cui volevo effettuare questa ricerca, se cerco una parola va tutto bene...mentre per le date no. le date hanno il formato tinytext perchè il fulltext accetta solo il tipo di formato text

    ho fatto alcuni articoli di prova..per vedere i risultati e mi mostra tutti gli articoli del db.....ovviamente è sbagliato.
    il dubbio meglio il timestamp della data o la data nel formato y-m-d?
    perchè match against non funziona con le date se con il resto fa la cosa giusta?

    Codice PHP:
    $query"SELECT *, DATE_FORMAT(datetime,'[b]%d.%m.%Y[/b] - [b]%H:%i:%s[/b]') as datatime FROM articoli WHERE MATCH (titolo,content,materia,date) AGAINST ('$search' IN BOOLEAN MODE) "

  2. #2
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    salve a tutti avevo costruito un piccolo motore di ricerca con query che veniva interrogato tramite match against
    Sono interessato a questo articolo perchè non ho mai utilizzato il match against.
    Andando per logica io farei una funzione che converta le date in formato timestamp, che a sua volta lo trasforma in una stringa e così una funzione viceversa, per continuare magari ad avere sempre il formato anno,mese,giorno sul db e la utilizzo come in questo caso.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    la cosa strana è che con le parole normali funziona mentre con le date in formato testo perchè il campo indicizzato fulltext è testuale no...

    mi sembra che un limite della tecnica siano le parole corte...almeno è quello che ho letto in giro in rete,però se io metto "vita" per esempio l'articolo relativo me lo trova....
    mah...

    secondo te quindi dovrei fare la ricerca con il formato timestamp convertendo la data del db dal formato y-m-d in timestamp con il php...se non sbaglio la funzione è strtotime() giusto?

  4. #4
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Ho usato questa funzione per la conversione in timestamp:

    function convert_datetime($str) {

    list($date, $time) = explode(' ', $str);
    list($year, $month, $day) = explode('-', $date);
    list($hour, $minute, $second) = explode(':', $time);

    $timestamp = mktime($hour, $minute, $second, $month, $day, $year);

    return $timestamp;
    }
    Stavo però pensando che i due formati di date in questo caso non hanno l'ora, i minuti ed i secondi. Dovrebbe bastare toglierli dalla funzione.

    Dovresti costruirti un'altra funzione che inverta da timestamp a m-d-y. Oppure utilizzare quella funzione che hai detto te e che non ho mai utilizzato
    Sto andando per logica è una cosa come dicevo che non ho mai fatto.

    Dimmi poi se c'è l'hai fatta ed in che modo.
    Grazie.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    per ora ho adottato una seconda pagina di ricerca per le date(anche se la cosa non mi garba) usando il metodo classico WHERE $search LIKE.....
    comunque senza la conversione in timestamp la ricerca la fa lo stesso...
    ci deve essere qualche limitazione nell match against...mah non saprei proprio...

  6. #6
    Per le operazioni sulle date e' di semplicissimo apprendimento la classe Date/time.
    In questo caso ti e' utile il metodo gettimestamp() e setTimestamp.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    ok darò un'occhiata a ciò che mi hai proposto

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.