Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql заявка за съпоставяне на изречение с ключови думи в поле

Един от начините да го направите може да бъде конвертирането на apple, oranges, pears към apple|oranges|pears и използвайте RLIKE (т.е. регулярен израз), за да съвпадне с него.

Например „Джон обичаше да яде ябълки“ съответства на регулярния израз „apple|orange|pears“.

Първо, за да преобразувате 'ябълка, портокали, круши' във формата за регулярни изрази, заменете всички ', ' с '|' като използвате REPLACE . След това използвайте RLIKE за да изберете записите на ключови думи, които съвпадат:

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

Това обаче зависи от това дали разделянето ви със запетая е последователно (т.е. ако има един ред, който изглежда като apples,oranges това няма да работи като REPLACE замества запетая, последвана от интервал (както според примерните редове).

Също така не мисля, че ще се увеличи много добре.

И ако имате изречение като „Джон обичаше да яде ананаси“, то би съвпадало и с двата реда по-горе (тъй като в него има „ябълка“). След това можете да опитате да добавите граници на думи към регулярния израз (т.е. WHERE $sentence RLIKE '[[:<:]](apple|oranges|pears)[[:>:]]' ), но това ще прецака съвпадението, когато имате множествено число („ябълки“ няма да съвпадне с „[wordboundary]apple[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. Топ алтернативи на MySQL Workbench

  2. Фатална грешка:Използване на $this, когато не е в контекста на обекта

  3. Има ли начин да се направи INSERT...ON DUPLICATE KEY UPDATE в Zend Framework 1.5?

  4. Django не може да добави или актуализира дъщерен ред:ограничение за външен ключ не работи

  5. свържете се с mysql с помощта на c++