vostro problema riguarda il creare una query booleana priorità e per questo tipo di una query deve andare in profondità di ricerca booleana e ora come la ricerca booleana viene eseguita. In parole semplici, ti spiego perché viene mostrato il risultato del secondo numero di risultati.
Una volta deve prima capire che cosa significa Boolean nella programmazione? Significa che la condizione è vera o falsa i, e da 0 a 1.
Ora mi spiego per la ricerca booleana eseguita? Hai dato due parole. Cerchiamo di cercare la riga per riga in modalità booleana. Il motore di ricerca si avvia e ricerca la riga per riga ora dove viene trovata la prima parola, rende il record vero e dà il punteggio come 1 alle righe in cui viene trovata la prima parola e prepara anche il numero di parole trovate nella riga.
Ora sposta la parola successiva e fa lo stesso processo fornisce il record Vero e crea un elenco di record ovunque sia trovata la parola e prepara anche il numero di parole trovate nella riga.
Ora ci sono due righe di risultati disponibili e sono bastonati e con la priorità viene data alle parole con il numero massimo di parole e la riga qui è il problema principale.
Esempio
Prima >>> nos totali. >> Secondo >> numero totale >>> >> finali fila
Word >>> Risultati >> >>>> Parola di parole>>> Risultati >> >> senza risposta
1 >>>>>>>> 2 >>>>>>>> 1 >>>>>>>>> 1 >>>>>>>> 1.33 >>>> 1 >>> 1.33
0 >>>>>>>> 0> >>>>>>> 2 >>>>>>>>> 2 >>>>>>>> 1.25 >>>> 2 >>> 1.25
0 >>>>>>>> 0 >> >>>>>> 1 >>>>>>>>> 0 >>>>>>>> 1.25 >>>> >>> 3 1
Mentre in discoteca due elenchi dei risultati quando il vero aggiunto con false quindi il risultato è vero, come se si aggiungesse 1 + 0 = 1 e i risultati siano shoul d con valore superiore a 1. Quindi, mentre si valuta la rilevanza per le parole trovate, si trova sempre che il motore di ricerca mostra i risultati dove ha trovato una parola.
Le query di rilevanza del calcolo vengono eseguite in due tipi o ignorano i punteggi che sono uguali a uno e fanno solo calcoli sui record il cui punteggio è maggiore di 1. Il secondo è effettuare una query di questo tipo che non mostra mai i record uguali a uno. Come nel tuo caso è possibile in modo che le cose qui sotto anche per ottenere i risultati corretti per due parole:
SELECT *, ((1.3 * (MATCH(title) AGAINST ('+term +term2' IN BOOLEAN MODE))) + (0.6 * (MATCH(text) AGAINST ('+term +term2' IN BOOLEAN MODE)))) AS score FROM results WHERE (MATCH(title, text) AGAINST ('+term +term2' IN BOOLEAN MODE)) HAVING relevance > 0 ORDER BY relevance DESC;
so che usare la parola che ha rendere la query po 'lento ma non c'è altra soluzione disponibile. Spero che questo risolva la tua richiesta.