投稿のタイトルと投稿のタグに基づいて投稿を検索する検索機能を作成したいと思います。私はmysqlクエリだけでこれを行うことが可能かどうか、または2つのクエリを使用してPHPを使用して結果を並べ替える必要があるかどうか疑問に思います。私は照会する"Fuzzy"はタグと投稿をmysqlとphpに投稿します
を私はこのような何かを試してみたが、それは、重複記事を返します。
SELECT post_tags.id, post_tags.tag_id, posts.id, tags.tag_name,
posts.title
FROM post_tags
JOIN tags ON (tags.tag_name LIKE '%something%' AND post_tags.tag_id = tags.id)
JOIN posts ON (posts.title LIKE '%something%' OR post_tags.post_id = posts.id);
私もことをどこかで聞きましたmysqlでLIKE
を使用すると、インデックスが作成されないため、実際には遅いです。
私の質問は、この場合のベストプラクティスですか?
SELECT posts.id, posts.title
FROM post_tags
JOIN tags ON post_tags.tag_id = tags.id
JOIN posts ON post_tags.post_id = posts.id
WHERE tags.tag_name LIKE '%something%' OR posts.title LIKE '%something%';
これは投稿のすべてのタグを返しました。自分のタイトルやタグに一致する投稿だけが必要です。 – Marius
@マリアス私は答えを編集しました –