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

Sådan søger du i en SQL-tabel efter en sætning

Stavefejl-problemet er svært, hvis ikke umuligt, at løse godt i ren MySQL.

Flerkolonnen FULLTEXT søgning er ikke så slemt.

Din forespørgsel vil se sådan her ud ...

 SELECT column, column
   FROM table
  WHERE MATCH(Company, FirstName, LastName, whatever, whatever) 
      AGAINST('search terms' IN NATURAL LANGUAGE MODE)

Det vil producere en masse resultater, sorteret efter hvad MySQL gætter er det mest sandsynlige hit først. MySQL's gæt er ikke gode, men de er normalt tilstrækkelige.

Du skal bruge en FULLTEXT indeks, der matcher listen over kolonner i din MATCH() klausul. Oprettelse af det indeks ser sådan ud.

ALTER TABLE book 
ADD FULLTEXT INDEX Fulltext_search_index_1 
    (Company, FirstName, LastName, whatever, whatever);

Uanset kommentarer i dit spørgsmål, skal du blot bruge et indeks for den gruppe af kolonner, som du vil søge i.

20.000 rækker vil ikke være en stor byrde for nogen serverhardware fra nyere årgange.

Stavefejl:Du kan prøve SOUNDEX() , men det er en algoritme fra det tidlige 20. århundrede designet af Bell System til at slå folks navne op på amerikansk engelsk. Den er designet til at få mange falske positive hits, og den er virkelig dummere end en spand sten.

Hvis du virkelig har brug for stavekorrektion, skal du muligvis undersøge Sphinx.




  1. Hvordan opdaterer man tabel fra linkende tabel?

  2. Hvordan specificerer man den primære nøgleseed for en postgres-tabel?

  3. Kan ikke oprette forbindelse til SQLServer-databasen i Java-applikationen

  4. MySQL-sætning for at vælge den seneste indgang i en specifik kolonne