Visualizzazione risultati 1 fino 5 di 5

Discussione: Valori dell'attinenza dei risultati nelle ricerche FullText in un Database MySQL

  1. #1
    Guest

    Predefinito Valori dell'attinenza dei risultati nelle ricerche FullText in un Database MySQL

    Sto costruendo il motore di ricerca di un sito e mi sono trovato davanti a questo problema:
    Facendo una query simile:
    Codice:
    SELECT *, ROUND(MATCH (title) AGAINST ('Nome'), 1) AS attinence
    FROM data
    WHERE MATCH (title) AGAINST ('Nome')
    ORDER BY attinence DESC
    LIMIT 5
    Avendo nel db un'indice di tipo FULLTEXT nel campo "title", se nel record è presente solo la parola "Nome" mi viene data un'attinenza di 6.2 (arrotondata ovviamante). Perché questo? Se la parola è uguale non dovrebbe essere un'attinenza massima dato che le parole coincidcono?
    Avendo questo problema, come posso mostrare il reale valore di attinenza da una scala 1 a 10?
    Grazie in anticipo

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Quello che tu chiami attinenza non è un valore su una scala fissa. E' una "rilevanza" della keyword rispetto all'intera tabella.

    E' alta se la parola appare di rado nei record della tabella (in quel campo), è bassa se appare spesso. Purtroppo non c'è un ben preciso range, quindi non puoi scalarla in modo assoluto. Il meglio che puoi fare è dividere per il valore massimo ed ottenere una percentuale relativa.

  3. #3
    Guest

    Predefinito

    Non ho capito la parte "Dividere per il valore massimo ed ottenere una percentuale relativa".
    Intendi estrarre il valore più alto di questi e poi dividerlo per ogni record estratto successivamente?

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    L'opposto, come calcolare una percentuale, o normalizzare probabilità.

    Metti che ottieni

    A 0.5
    B 1.0
    C 2.0

    prendi max = 2.0, e dividi tutti i valori per max

    A_rel = 0.5 / 2.0 = 0.25
    B_rel = 1.0 / 2.0 = 0.50
    C_rel = 2.0 / 2.0 = 1.0

    E ti ritrovi con una "rilevanza relativa" su una scala da 0 a 1.

  5. #5
    Guest

    Predefinito

    Ahn ok, ho capito, però rimmarrebbe sempre una scala sfasata e variata in base ai risultati! Vabbè, eliminerò quest'opzione! Mi sembrava carina epr far capire all'utente in base a cosa e come vengono ordinati i dati da lui stesso cercato! Ho fatto qualcosa esteticamente più bello!
    Grazie dread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •