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?