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

    [MySql] Ricerca FULL-Text per Attinenza

    Ciao ragazzi sto diventando matto con una query di ricerca con MATCH AGAINST per attinenza...Sto facendo delle prove stupidissime su delle tabelle ma non mi funziona...Ovvero mi spiego meglio! quando la ricerca porta ad avere più risultati mi dice che sono uscite 0 righe...

    Vi posto il dump della tabella che ho fatto con degli articoli che ho precaricato per fare delle prove...


    codice:
    CREATE TABLE IF NOT EXISTS `Articoli` (
      `ID_Articolo` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `Titolo_Articolo` varchar(200) DEFAULT NULL,
      `Articolo` text,
      PRIMARY KEY (`ID_Articolo`),
      FULLTEXT KEY `Titolo_Articolo` (`Titolo_Articolo`,`Articolo`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
    
    --
    -- Dump dei dati per la tabella `Articoli`
    --
    
    INSERT INTO `Articoli` (`ID_Articolo`, `Titolo_Articolo`, `Articolo`) VALUES
    (1, 'Film con grande Cast', 'Sta per uscire un film con un cast colossale,per la realizzazione sono state usate 34 macchine da presa'),
    (2, 'Film con cast di merda', 'Film la cui realizzazione è costata meno che una scatola di crick crock'),
    (3, 'Fast and Furious', 'Altro film per fast and furious la saga che ha fatto rombare centinaia di motori di coglioni per Roma');

    Basta provare questa query che voglio mi ricerchi la parola "realizzazione" al suo interno che non restituisce niente...E soprattutto se io avessi necessità di cercare in un campo solo??
    Codice PHP:
    SELECT *  ,MATCH (Titolo_ArticoloArticolo)
    AGAINST ('realizzazione') AS attinenza
    FROM Articoli
    WHERE MATCH 
    (Titolo_ArticoloArticolo)
    AGAINST ('realizzazione')
    ORDER BY attinenza DESC 

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Basta leggersi il manuale.

    http://dev.mysql.com/doc/refman/5.1/...xt-search.html

    words that are present in 50% or more of the rows are considered common and do not match.
    Ergo, se aggiungi altri due record in cui non è presente la parola realizzazione, i tuoi due record magicamente compariranno.

  3. #3
    ma se ho pochi articoli memorizzati allora avrò sempre questo problema! Come posso fare per ovviare? C'è un modo?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Le ricerche fulltext hanno alcune limitazioni come quella in cui sei incappato tu.
    Se hai pochi record puoi farne a meno e limitarti a un banale

    ... where campo1 like '%realizzazione%' or campo2 like '%realizzazione%' ...

  5. #5
    Effettivamente era quello che avevo fatto però mi sembrava molto meglio la ricerca fulltext anche perchè ti poteva ordinare la ricerca per attinenza.. Come potrei creare una cosa che mi calcoli una sorta di attinenza con like? Vorrei fare in modo che oltre ai normali metodi di ricerca gli utenti possano ordinare anche per quello che si avvicina di più..

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    L'ideale sarebbe usare le ricerche fulltext.
    Nel caso la ricerca non produca risultati basterebbe usare chiavi più mirate.

    Una soluzione molto grezza, giusto per darti un'idea, senza ricorrere ad esse potrebbe essere questa

    codice:
    select *,(
    if(titolo_articolo like '%realizzazione%',2,0) +  
    if(articolo like '%realizzazione%',1,0)) as rilevanza
    from articoli where titolo_articolo like '%realizzazione%' or articolo like '%realizzazione%'
    order by rilevanza desc
    dove ho assegnato peso 2 al rilevamento della parola nel campo titolo e 1 all'altro campo.
    Se puoi comunque usa le fulltext che offrono tante possibilità che altrimenti ti precludi.

  7. #7
    Grazie mille!!!!!!!!!!!

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.