Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyszukiwanie wieloznaczne w wyszukiwaniu pełnotekstowym MySQL

Niestety nie możesz tego zrobić za pomocą indeksu pełnotekstowego MySQL. Nie możesz pobrać '*nited states' natychmiast z indeksu, ponieważ lewe znaki są najważniejszą częścią indeksu. Jednak możesz wyszukaj 'United Sta*' .

// the only possible wildcard full-text search in MySQL
WHERE MATCH(column) AGAINST ('United Sta*' IN BOOLEAN MODE)

Pełny tekst MySQL sprawdza się najlepiej przy wyszukiwaniu całych słów w zdaniach — nawet to czasami może być do niczego. W przeciwnym razie sugerowałbym użycie zewnętrznego silnika pełnotekstowego, takiego jak Solr lub Sfinks . Myślę, że Sphinx pozwala na stosowanie symboli wieloznacznych prefiksów i sufiksów, nie jestem pewien co do innych.

Możesz wrócić do LIKE MySQL klauzula, ale znowu uruchamianie zapytań takich jak LIKE '%nited states' lub LIKE '%nited Stat%' , ucierpi również na wydajności, ponieważ nie może użyć indeksu na pierwszych kilku znakach. 'United Sta%' i 'Unit%States' są w porządku, ponieważ indeks może być użyty przeciwko pierwszej grupie znanych znaków.

Innym dość poważnym zastrzeżeniem dotyczącym indeksowania pełnotekstowego w MySQL jest lista słów przerywających i ustawienia minimalnej długości słowa . Na przykład w środowisku hostingu współdzielonego będziesz ograniczony do słów większych lub równych 4 znakom. Zatem wyszukiwanie „Goo” w celu uzyskania „Google” zakończy się niepowodzeniem. Lista zatrzymanych słów nie zezwala również na popularne słowa, takie jak „i”, „może” i „na zewnątrz” - w rzeczywistości jest 548 słów przerywanych razem! Ponownie, jeśli nie korzystasz z hostingu współdzielonego, ustawienia te można stosunkowo łatwo modyfikować, ale jeśli tak, zirytują Cię niektóre ustawienia domyślne.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. STR_TO_DATE() Przykłady – MySQL

  2. Jak ponownie przypisać kolumnę AUTO_INCREMENT dla każdego wiersza w tabeli MySQL za pomocą PHP?

  3. MySQL — pobierz wartość z innej tabeli, jeśli kolumna ma wartość null

  4. MySQL GROUP WEDŁUG przedziału wiekowego, w tym przedziałów null

  5. Wybór bazy danych w mysql ze spacjami w nazwie