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

mysql zapytanie do dopasowania zdania do słów kluczowych w polu

Jednym ze sposobów na to może być przekonwertowanie apple, oranges, pears do apple|oranges|pears i użyj RLIKE (tj. wyrażenie regularne), aby się z nim dopasować.

Na przykład wyrażenie „Jan lubił jeść jabłka” pasuje do wyrażenia regularnego „jabłko|pomarańcza|gruszki”.

Po pierwsze, aby przekonwertować wyrażenie „jabłko, pomarańcze, gruszki” na formę regex, zamień wszystkie „,” na „|” używając REPLACE . Następnie użyj RLIKE aby wybrać pasujące wpisy słów kluczowych:

SELECT * 
FROM keywords_table
WHERE 'John liked to eat apples' RLIKE REPLACE(keywords,', ','|');

Jednak zależy to od tego, czy separacja przecinkami jest spójna (tj. jeśli istnieje jeden wiersz, który wygląda jak apples,oranges to nie zadziała jako REPLACE zastępuje przecinek, po którym następuje spacja (zgodnie z przykładowymi wierszami).

Nie sądzę też, że będzie się dobrze skalować.

A jeśli masz zdanie takie jak „Jan lubił jeść ananasy”, pasuje ono do obu powyższych wierszy (ponieważ zawiera słowo „jabłko”). Następnie możesz spróbować dodać granice wyrazów do wyrażenia regularnego (np. WHERE $sentence RLIKE '[[:<:]](apple|oranges|pears)[[:>:]]' ), ale zepsułoby to dopasowanie, gdy masz liczbę mnogą ("jabłka" nie pasowałoby do "[wordboundary]jabłko[wordboundary]").



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pojedyncza instrukcja MySQL do połączenia dwóch tabel

  2. Dlaczego dodanie „*” do zapytania MySQL powoduje błąd składni?

  3. Jak wyszukiwać podciągi Soundex() w MySQL?

  4. Jak testować tabele powiązane z kluczami obcymi?

  5. MySQL naprawia luki autoinkrementacji w dwóch tabelach