mysql - выбрать, где совпадают слова - PullRequest
0 голосов
/ 05 мая 2020

Есть ли способ выполнить запрос SELECT и вывести только совпадающие слова между поиском пользователя и некоторыми столбцами в БД?

На мгновение это моя таблица: таблица БД - идентификатор, заголовок, ключевые слова

1 ; first title here        ; ticket flight 
2 ; second title            ; ticket airport cheap agency
3 ; third title goes here   ; vacation website flight buy online cheap
4 ; fourth title            ; car license insurance 

поиск пользователем строки «Лучший онлайн-сайт для покупки дешевых авиабилетов»

Я хотел бы найти только результаты, в которых столбец KEYWORDS содержит слова из строки поиска пользователя, и отсортировать это строки / записи, которые содержат наиболее подходящие слова для меньшего.

Я знаю, что в PHP я могу использовать "array_intersect"

$differenceCount = count(array_intersect($array_1, $array_2));

есть ли что-нибудь подобное SQL запрос?

1 Ответ

1 голос
/ 05 мая 2020

Как сказал nbk в комментарии, я никогда не использовал его, поэтому я его тестировал;)

Полнотекстовый поиск по индексу

Схема (MySQL v5.7)

SELECT search.*,
MATCH(keywords) AGAINST ('flight ticket' IN BOOLEAN MODE)
AS keyword_match
FROM search 
ORDER BY keyword_match DESC;
---

**Query #1**

    SELECT search.*,
    MATCH(keywords) AGAINST ('flight ticket' IN BOOLEAN MODE)
    AS keyword_match
    FROM search 
    ORDER BY keyword_match DESC;

| product_id | title  | keywords                                 | keyword_match        |
| ---------- | ------ | ---------------------------------------- | -------------------- |
| 3          | title3 | ticket flight                            | 0.12162718921899796  |
| 5          | title5 | ticket flight airport cheap              | 0.12162718921899796  |
| 2          | title2 | ticket airport cheap agency              | 0.0906190574169159   |
| 1          | title1 | vacation website flight buy online cheap | 0.031008131802082062 |
| 6          | title6 | flight airport cheap                     | 0.031008131802082062 |
| 4          | title4 | car license insurance                    | 0                    |

---

Просмотр в DB Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...