Estou tentando encontrar a correspondência mais próxima com um determinado nome com mysql. A pontuação é a mesma para os dois primeiros resultados, mas olhando para ele eu preferiria pegar o segundo, pois quase se encaixa no nome.
SELECT ID, name, MATCH (`name`)
AGAINST ('Superocean Héritage 42mm' IN BOOLEAN MODE) as `score`
FROM cat_names cs
WHERE MATCH (`name`) AGAINST ('Superocean Héritage 42mm' IN BOOLEAN MODE)
ORDER BY `score` DESC
O resultado:
Superocean Héritage 6.3744072914123535
Superocean Héritage 42 6.3744072914123535
Superocean Héritage 46 6.3744072914123535
Existe uma maneira de ajustar a consulta para recuperar o segundo resultado corretamente?
Além disso, a pesquisa de texto completo retorna um índice de qualidade baixo para correspondências exatas:
Big Bang Aero Bang
9.445959091186523
Big Bang 44 mm
6.32852840423584
Big Bang Caviar
6.32852840423584
Big Bang Jeans
6.32852840423584
Big Bang Meca-10
6.32852840423584
Big Bang Sang Bleu
6.32852840423584
Big Bang Unico
6.32852840423584
Spirit of Big Bang
6.32852840423584
Big Bang 41 mm
6.32852840423584
Big Bang Broderie
6.32852840423584
Big Bang Ferrari
6.32852840423584
Big Bang King
6.32852840423584
Big Bang Pop Art
6.32852840423584
Big Bang Tutti Frutti
6.32852840423584
Big Bang
6.32852840423584
A correspondência exata tem a pontuação mais baixa.
Ah, você quer uma pontuação mais alta para correspondência exata? Ao invés de
Faz
O
=
teste será1
para uma correspondência exata, senão0
. Então, efetivamente, ele anula quaisquer que sejam osscore
retornos.(Formas alternativas de expressá-lo envolvem
IF
ouCASE
).