2013-07-01 10 views
5

Proprio ora sto utilizzando la seguente query mysqlmysql di ricerca full-text non corrispondente alla ricerca più rilevanti primi

SELECT * FROM songs WHERE MATCH (title,artist) AGAINST ('$ser' IN BOOLEAN MODE) 

Ora sta funzionando, ma non molto bene.

Per esempio dire che ho i seguenti termini nel mio database

Term One 
Term Two 
Term Three 

e faccio una ricerca per il termine di tre

$ser = 'Term Three' 

è semplicemente tornando

Term One 
Term Two 
Term Three 

Quindi è corrispondenza Termine ma non sta dando al Termine Tre una priorità più alta avendo sia Termine che Tre e non sono sicuro di cosa fare fai in modo che appaia sopra gli altri.

Spero che abbia senso.

risposta

3

Con le tabelle MyISAM, "tre" è un stopword per impostazione predefinita, pertanto non è indicizzato e viene ignorato in tutte le ricerche.

Se si utilizzano effettivamente tabelle MyISAM, è possibile specificare il proprio elenco personalizzato di stopword o disabilitare del tutto la funzionalità tramite l'opzione server ft_stopword_file (MyISAM).

NB: per le tabelle InnoDB, innodb_ft_server_stopword_table è l'opzione da cercare. "tre" sembra non essere una parola chiave per impostazione predefinita per InnoDB, ma l'elenco delle parole chiave potrebbe essere diverso sul tuo server.


[modifica]

Sono assolutamente trascurato che le ricerche booleane do not sort results automatically per importanza (come le ricerche in linguaggio naturale fanno). Tutto quello che dovete fare è aggiungere una clausola ORDER BY (si prega di test it here):

SELECT * FROM songs WHERE MATCH (title,artist) AGAINST ('$ser' IN BOOLEAN MODE) 
ORDER BY MATCH (title,artist) AGAINST ('$ser' IN BOOLEAN MODE) DESC 
+0

questo era solo un esempio, i termini attuali non contengono parole stop e stanno producendo gli stessi risultati. –

+0

@BelginFish A pensarci bene, penso che tutto ciò che devi fare è aggiungere una clausola 'ORDER BY'. Si prega di rivedere la mia modifica. – RandomSeed

+0

Grazie hai lavorato come un fascino :) –

Problemi correlati