sql >> Database teknologi >  >> RDS >> Mysql

Sådan laver du en mysql fuldtekstsøgning med flere kolonner, hvor partielle ord matches

I boolsk tilstand, kræver det, at strenge er til stede (i stedet for blot at score højere), udføres med + . præfiksmatching udføres med enden * . Det ser ud til at være det, du ønsker, så søg efter:

+John* +S*+John* +Smith*+Smith* +J*+Jo* +S* 

Bemærk, at fuldtekstindekser ikke kan hjælpe dig med at søge 'hvor som helst i et ord'. så noget som *mith* er bundet til at mislykkes:de er beregnet til at matche fra tegn 1 i et indeks.

Hvis du også vil bestille dem efter matchværdier, og for eksempel har brug for John Smith før Johnny Smithson , ville du gøre dette:

VÆLG * FRA bruger HVOR MATCH(..fields..) AGAINST ('match' I BOOLEAN MODE) ORDER BY MATCH(..fields..) AGAINST ('match' I BOOLEAN MODE) DESC;

Hvilket du vil se, bringer dig ingen vegne, medmindre du tilføjer alle ordene>=ft_min_word_len igen separat:

+John* +S* John+John* +Smith* John Smith+Smith* +J* Smith+Jo* +S* 

For den sidste er begge ft_min_world_len anderledes ønskes.



  1. Grupperet sammenkædning i SQL Server

  2. php hvordan gemmer og læser jeg json-data via mysql?

  3. Hvordan vil ændring af mysql-felttypen fra INT til VARCHAR påvirke data, der tidligere er gemt som en INT

  4. Indstil variabel fra SELECT PHP