Ho letto alcune articles e issues, ma non riusciva a trovare una soluzione soddisfacente. Voglio selezionare i record correlati dal database quando un utente compila un modulo; allo stesso modo la funzionalità funziona su questo sito quando fai una domanda.MySQL ricerca full-text con confini di parola
consideri una tabella del database con i seguenti tre record nella colonna subject
+---+---------------------------------------------------+
| 1 | Pagina aanmaken en beter doorzoekbaar maken |
+---+---------------------------------------------------+
| 2 | Sorteerfunctie uitbreiden in zoek-en-boek functie |
+---+---------------------------------------------------+
| 3 | Zoek de verschillen tussen de pagina's |
+---+---------------------------------------------------+
inizio la mia query di ricerca con la parola zoek
quindi voglio per interrogare i risultati più rilevanti dal database sul termine zoek
. Sono venuto con la seguente query:
SELECT
id,
subject,
MATCH(
subject
)
AGAINST(
'zoek*'
IN BOOLEAN MODE
)
AS
score
FROM
Issues
WHERE
MATCH(
subject
)
AGAINST(
'zoek*'
IN BOOLEAN MODE
)
quando faccio funzionare questa domanda mi aspettavo tutti i record da mostrare e (probabilmente, non so come funziona la specificità in MySQL) ID 3 per visualizzare in cima (perché la parola esatta corrisponde).
Invece i risultati della query erano solo riga 2
e 3
con esattamente lo stesso punteggio (0,031008131802082062).
cosa ho bisogno di cambiare nella mia domanda per abbinare le opportune registrazioni? Anche considerando che gli utenti possono digitare parole chiave o frasi.
Perché ti aspettavi di vedere tutti i record nel risultato? Il record 1-st non contiene la parola 'zoek' –
La risposta di @ r-costa in basso è corretta. Inoltre, potresti voler controllare "Come viene calcolato il ranking di pertinenza" su http://dev.mysql.com/doc/refman/5.7/en/fulltext-boolean.html. MySQL sta facendo ciò che dovrebbe fare qui. Se hai bisogno di una ricerca di testo più completa, probabilmente devi usare qualcosa di basato su Lucene (Solr, Elasticsearch, ecc.). – evanv