Реализация MySQL FTS - PullRequest
       1

Реализация MySQL FTS

0 голосов
/ 20 июля 2010

Я работаю над системой тикетов в 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)

Выполняется поиск всех выпусков
с альфа и бета (название, описание)
или с альфа и бета в одном из комментариев к проблеме.

Но эта настройка имеет ограничение
Я хочу, чтобы проблема появлялась в результатах поиска, если альфа присутствует в названии проблемы, а бета присутствует в одном из ее комментариев.Это невозможно при указанной выше настройке.
Как этого добиться?

1 Ответ

0 голосов
/ 20 июля 2010

Я еще не пробовал это в реальной жизни, но указание нескольких столбцов должно работать и в логическом режиме:

match (title,comment) against...

явного упоминания об этом нет, но в документах говорится о строках , которые ищутся, а не столбцах.

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