Хотя эта тема широко обсуждалась, она очень смутила меня, и я не смог найти правильный ответ.Не могли бы вы помочь мне в правильном направлении?Спасибо.
У меня есть эта настройка: таблица page
связана с таблицей widget
посредством справочной таблицы widget_to_page
:
page (p) sid | title | content
виджет (ш) sid | content
widget_to_page (wtp) sid | page_sid | widget_sid
Я создал полнотекстовый индекс для p.title
, p.content
, w.content
Далее, я хотел бы использовать комбинацию page-widget:
SELECT *, MATCH(p.title, p.content, w.content) AGAINST("'.$keyword.'") AS score
FROM page p, widget w, widget_to_page wtp
WHERE MATCH(p.title, p.content, w.content) AGAINST("'.$keyword.'")
AND p.sid = wtp.page_sid
AND w.sid = wtp.widget_sid
ORDER BY score DESC
Некоторые замечания:
- Это, очевидно, не работает ...: -)
- Я читал, что если я использую этот синтаксис для объединения таблиц (или используйте оператор JOIN), чтобы MySQL игнорировал полнотекстовый индекс.Какой правильный метод?
Альтернатива, которую я попробовал, состояла в том, чтобы создать представление MySQL из следующего утверждения:
SELECT *
FROM page p, widget w, widget_to_page wtp
WHERE p.sid = wtp.page_sid
AND w.sid = wtp.widget_sid
Но, похоже, это тоже неРабота.Некоторые люди говорят о создании полнотекстового индекса для этого конкретного представления, но я не могу найти никаких вариантов в PHPMyAdmin, чтобы сделать это, и я не знаю, возможно ли это вообще.
Короче ... что такоелучшая практика в такой ситуации?Спасибо.