Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209

    FULLTEXT MATCH AGAINST acronimo

    Salve a tutti,
    ho un comportamento di una query FULLTEXT che non capisco, la situazione è questa:

    C'è un motore di ricerca che permette agli utenti di cercare dei privati in base alla ragione sociale della ditta a cui appartengono.
    La tabella Privati principale è collegata alla tabella esterna Ditte tramite il campo ID_ditta
    L'utente inserisce P.S.M. come chiave di ricerca.
    La ricerca viene fatta in base al campo Ragione_sociale della tabella esterna Ditte per il quale è stato definito un indice FULLTEXT.

    Pertanto, la query risultante con la chiave è la seguente:
    codice:
    SELECT (
    	SELECT Ditte.Ragione_sociale
    	FROM Ditte
    	WHERE Ditte.ID_ditta = Privati.ID_ditta
    	) AS ditta, 
    Cognome, Nome,
    	MATCH Ditte.Ragione_sociale
    	AGAINST ('P.S.M.' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) AS rilevanza
    FROM Privati
    JOIN Ditte ON Privati.ID_ditta = Ditte.ID_ditta
    WHERE (Ditte.Ragione_sociale LIKE  '%P.S.M.%')
    ORDER BY rilevanza DESC , ditta ASC , Cognome ASC , Nome ASC
    Facendo la query così, il risultato sono 3 record che corrispondo alla ragione sociale P.S.M. S.R.L.
    Il problema è che la colonna rilevanza (che sarebbe lo score del MATCH AGAINST) mi da sempre 0 ma solo nei casi in cui ci sono . (punti) nella chiave.
    La collation della tabella è utf8-general-ci, quindi i confronti sono case-insensitive
    Ho provato anche ad usare il BOOLEAN MODE ed il NATURAL LANGUAGE MODE ma la rilevanza è sempre 0, come mai?
    E' un comportamento normale in presenza dei punti?

  2. #2
    Vedi il manuale https://dev.mysql.com/doc/refman/5.5...t-boolean.html

    ci sono anche altre limitazioni come le stop words, la frequenza riscontrata e la lunghezza delle parole cercate

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Le ricerche fulltext di mysql sono storicamente non proprio il punto forte.
    Usualmente si utilizza sphinx, come programma separato o come plugin (ce ne sono per mariadb anche piuttosto bellini), dove il "mondo" fulltext è ... come deve essere.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.