Я работаю над системой тикетов в PHP / MySQL.Мы внедрили mysql FTS в логическом режиме, чтобы предоставить пользователям возможность поиска.Пользователь вводит строку поиска, и мы представляем ей список проблем.
Ниже приведен пример схемы базы данных:
таблица проблем - ( id , title , описание )
Имеет индекс fts (заголовок, описание)
таблица Issue_comments - ( id , issue_id , comment )
Имеет индекс fts (комментарий)
Каждая проблема может иметь несколько комментариев.Таким образом, в таблице Issue_comments может быть несколько строк, соответствующих строке в таблице проблем.
Допустим, пользователь вводит строку поиска - альфа-бета
PHP-скрипт разбивает строку на отдельногослова, добавьте знак « + » перед каждым словом и выполните приведенный ниже запрос.
select id as issue_id from issues where match(title, description) against ('+alpha +beta' in boolean mode)
union
select id as issue_id from issues inner join issue_comments on issue.id=issue_comments.issue_id where match(comment) against ('+alpha +beta' in boolean mode)
Выполняется поиск всех выпусков
с альфа и бета (название, описание)
или с альфа и бета в одном из комментариев к проблеме.
Но эта настройка имеет ограничение
Я хочу, чтобы проблема появлялась в результатах поиска, если альфа присутствует в названии проблемы, а бета присутствует в одном из ее комментариев.Это невозможно при указанной выше настройке.
Как этого добиться?