Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Cadeia de escape para uso na pesquisa de texto completo do MySQL


Apenas as palavras e os operadores têm significado no modo de pesquisa booleano. Os operadores são:+ , - , > < , ( ) , ~ , * , " , @distance . Depois de algumas pesquisas, descobri o que são os caracteres da palavra:Maiúsculas, Letras minúsculas, Numeral (dígito) e _ . Eu acho que você pode usar uma das duas abordagens:

  1. Substitua todos os caracteres que não sejam palavras por espaços (prefiro essa abordagem). Isso pode ser feito com regex:
    $search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
    

  2. Substitua os operadores de caracteres por espaços:
    $search = preg_replace('/[+\-><\(\)~*\"@]+/', ' ', $keyword);
    

Somente as palavras são indexadas pelo mecanismo de pesquisa de texto completo e podem ser pesquisadas. Caracteres que não são palavras não são indexados, portanto, não faz sentido deixá-los na string de pesquisa.

Referências: