ホームページ  >  記事  >  バックエンド開発  >  「関連記事」の結果は関連性の高い案件が上位に表示されるため、効率的な書き方となります。

「関連記事」の結果は関連性の高い案件が上位に表示されるため、効率的な書き方となります。

WBOY
WBOYオリジナル
2016-06-13 12:05:22962ブラウズ

「関連記事」の結果は、関連性の高い事例ほど上位に表示されます。効率的な書き方を見つけてください

この投稿は、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 に問題がありますか?
------解決策---------
全文検索を使用する
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。