この投稿は、sky94132003 によって 2014-08-24 03:53:35 に最終的に編集されました。 私の記事システムは、複数の条件に応じて
、どのような可能性が実現できるかを確認してください
4 つのテーブル 基本的な紹介コンテンツ 記事のメインテーブルid
lid = 関連するコレクション ID、保存形式 (1,2,3)
tags = 関連するタグ ID、保存形式 (1,2,3)
typeid = カテゴリ ID 1 つの番号のみ
コレクション蓋
名前
タグid
名前
分類typeid
name
typeid = カテゴリ ID、これ以上言う必要はありません
tag = Tag = 言うまでもなく、
lid = コレクションですが、1 つの記事でdo 複数のコレクションに配置します。例: PHP MYSQL AJAX 更新コメントなし
ユーザーは PHP コレクション、MYSQL 記事、AJAX コレクションに配置できます
タグはサイト全体で共有され、重複は追加されません。
のみが選択されるため、自分の記事のカテゴリリストを作成することはできません。そのため、記事の特定の部分がすでに追加されているため、コレクション機能が表示されます 現在のコレクション内の他の記事を表示します
したがって、関連記事セクションでは、コレクション内のドキュメントが TAG 記事よりも上位にランク付けされるべきではありません
したがって、準備された関係ランキングは 1. TAG 関連
2 . アンソロジー
3. 現在のカテゴリの最新記事
なぜ 3 回に分けなければならないのですか?
タグ付けされすぎるのが怖いし、同時にアンソロジー機能も使っていないので...
最後のステップは、現在の機密記事を見つけることです現在の記事の
TAG は 3,14
lid = 7,12
typeid = 2
SELECT * FROM `content` WHERE `tags` IN (3,14 ) ORDER BY `time` DESC LIMIT 10
SELECT * FROM `content` WHERE `lid` IN (7,12) ORDER BY `time` DESC LIMIT 10
SELECT * FROM `content` WHERE `typeid` = '2' ORDER BY `time` DESC LIMIT 10
フロントに関連記事が10件表示されます
元々は3回に分ける予定だったのでそれが一番安全毎回10個ずつ取る
そこで考えたのですが… 配列のマージなども面倒です 要はデータを取得しすぎるのですが、フロントは10個だけで済みます。
それでは 1 つの文に変更します
SELECT * FROM `video_content` WHERE `tags` IN (3,14) or `lid` IN (3) or `typeid` = 2 LIMIT 10
でも、これはTAG>アンソロジー>分類で順位付けできるようですが…
どうやってリクエストすればいいのですか?
後半なのでリクエストするのがかなり面倒そうです。ページの50%は関連記事を表示するセクションなので、操作上非常に重要です
-----解決策--------------- ---- -SQL に or を使用するのは良くありません。
データがあまりタイムリーである必要がない場合は、
3 つの SQL ステートメントを組み合わせたデータをキャッシュします。一定期間 (30 分、1 時間、またはそれ以上)
データは無効なデータであるため、ビューやコメントなどはありません。
-----解決策--- ----- ------------タグが 10 個必要な場合は、まず 10 個のタグを取得し、足りなければ lib を取得する必要があるという意味ですか?それで十分でない場合はタイプを入力しますか?
この場合、SQL に問題がありますか?
------解決策---------全文検索を使用する