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

php/mysql. Czy istnieje funkcja mysql do wykrywania, czy co najmniej 2 określone słowa istnieją w co najmniej jednym polu wiersza mysql?

Myślę, że chcesz użyć Boolean Full-Text Search

Jeśli pasujesz bez operatorów + - przeciwko takim jak green red blue zwracane są wszystkie wiersze, w których rekord zawiera co najmniej jedno słowo:green lub red lub blue .

IN BOOLEAN MODE a bez operatorów każde dopasowane słowo otrzyma 1 . Więc jeśli istnieje rekord pasujący do dwóch z trzech słów, otrzyma wynik 2 .

Aby uzyskać wiersze z co najmniej 2 punktami:

SELECT *,
MATCH (`TextToCheckIn`) AGAINST ('green red blue' IN BOOLEAN MODE) `score`
FROM `my_tab` WHERE 
MATCH (`TextToCheckIn`) AGAINST ('green red blue' IN BOOLEAN MODE)
HAVING `score` >= 2
ORDER BY `score` DESC

W trybie języka naturalnego punktacja działa zupełnie inaczej. Myślę, że opiera się głównie na BM25 .

W przypadku dużych zbiorów danych wyszukiwanie pełnotekstowe za pomocą wartości logicznej (przy użyciu indeks pełnotekstowy ) zwykle przewyższa REGEXP lub LIKE zdecydowanie, jeśli pasujące słowa gdzieś w tekście. Używałby tylko like/regexp do dopasowania od inicjału, takiego jak REGEXP '^word' lub LIKE 'word%' - czy można wykorzystać indeks.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj wartość kolumny, zastępując część ciągu

  2. MySQL - zapytanie UPDATE za pomocą instrukcji SET zależnej od wyniku poprzedniej instrukcji SET

  3. utwórz tablicę z zapytania mysql php

  4. jak uzyskać identyfikator ostatniego wstawienia po zapytaniu o wstawienie w aktywnym rekordzie codeigniter

  5. Permutacja MySQL