データベースの検索に使用しているクエリがあります。クエリはコードに組み込まれ、用語はパラメーター化されるため、すべてが適切かつ安全に実行されます。検索フィールドからのユーザー入力に基づいて生成されるため、用語はテーブルから取得できないためです。
すべてが正常に機能します。検索を実行するためのより良い/より高速な方法があるかどうか疑問に思っています。
SELECT
sum(score * multiplier) score,
a.id,
a.title
FROM
(
SELECT 3 score, 'a railway employee' term UNION ALL
SELECT 2 score, 'railway employee' term UNION ALL
SELECT 2 score, 'a railway' term UNION ALL
SELECT 1 score, 'employee' term UNION ALL
SELECT 1 score, 'railway' term UNION ALL
SELECT 0 score, 'a' term
) terms
CROSS JOIN
(
SELECT 'title' TYPE, 1 multiplier
UNION ALL SELECT 'summary', 1.1
UNION ALL SELECT 'detail', 1.5
) X
INNER JOIN
(
SELECT id, 'title' TYPE, title SEARCH FROM article
UNION ALL
SELECT id, 'summary' TYPE, summary SEARCH FROM article WHERE summary <> ''
UNION ALL
SELECT artId, 'detail' TYPE, txt SEARCH FROM articleSections
) s ON s.TYPE = x.TYPE AND SEARCH LIKE concat('%', terms.term, '%')
INNER JOIN article a ON a.id = s.id
GROUP BY id, title
ORDER BY score DESC;
;
機能的な簡単なデモはsqlfiddleにあります。