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

Ciąg znaków ucieczki do użycia w wyszukiwaniu pełnotekstowym MySQL

Tylko słowa i operatory mają znaczenie w trybie wyszukiwania logicznego. Operatory to:+ , - , > < , ( ) , ~ , * , " , @odległość . Po kilku poszukiwaniach odkryłem, jakie są znaki słowne:wielkie litery, małe litery, cyfra (cyfra) i _ . Myślę, że możesz użyć jednego z dwóch podejść:

  1. Zamień wszystkie znaki niebędące słowami na spacje (wolę to podejście). Można to osiągnąć za pomocą wyrażenia regularnego:

    $search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
    
  2. Zastąp operatory znaków spacjami:

    $search = preg_replace('/[+\-><\(\)~*\"@]+/', ' ', $keyword);
    

Tylko słowa są indeksowane przez wyszukiwarkę pełnotekstową i mogą być przeszukiwane. Znaki niebędące słowami nie są indeksowane, więc nie ma sensu zostawiać ich w wyszukiwanym ciągu.

Referencje:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Node.js MySQL - Błąd:połącz ECONNREFUSED

  2. Utwórz tabelę za pomocą instrukcji sql za pomocą executeUpdate w Mysql

  3. Jak naprawić błąd MySQL 1064?

  4. PHP/PDO/MySQL:wstawienie do MEDIUMBLOB przechowuje złe dane

  5. JSON_LENGTH() – Zwraca długość dokumentu JSON w MySQL