「相关文章」结果是越相关排名越前的案例,求一个高效的写法
我的文章系统,想按照多个件条下
,看看有什么可能性可做到
4张表 基础简介
content 文章主表
id
lid = 相关的文集id ,保存格式 (1,2,3)
tags = 相关的TAG 的ID ,保存格式 (1,2,3)
typeid = 分类ID 只为1个数字
文集
lid
name
Tags
id
name
分类
typeid
name
typeid = 分类ID, 不别多说
tag = 标签这不用多说,
lid = 一个文集, 但一篇文章可以放到多个文集, 比如: PHP+MYSQL+AJAX无刷新评论
用户可能放到 PHP文集,MYSQL文章,AJAX文集
TAG 是全站共用,重复就不新增,只会选择
所以不能做成一个自己文章的分类列表,所以会出现了文集功能
因为文章某个部分已经会显示当前文集其他的文章
所以在关相文章的部分,文集中的文件不比TAG文章更应该排在前面
所以准备的关系排名是
1. TAG相关
2. 文集
3. 最新的当前分类文章
为什么要分3次???
因为我就是怕太TAG,同时又没有用到文集功能....
所以最后一步才是当前分类文章
当前文章的
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
前台显示十条相关文章
本来是准备,分3次,然后每次拿10条是最安全的
后来想想...这样还有合并数组什么的也麻烦,重点是取太多资料,但前台只需要10条
所以换成一句
SELECT * FROM `video_content` WHERE `tags` IN (3,14) or `lid` IN (3) or `typeid` = 2 LIMIT 10
但这样好像又能以TAG>文集>分类...去排名
请求一下有何方法?
要求好像蛮麻烦的呵呵,因为页面下半部有50%的部分是显示相关文章,所以在营运上很重要
回复讨论(解决方案)
暂时用了这一段代码,感觉有点蠢
有什么更好的方法建议呢?
//相关文章if (!empty($data["tags"]) || !empty($data["lid"])) { $tags = $data["tags"]; $lid = $data["lid"]; $tag_sql = "SELECT * FROM `content` WHERE `tags` IN ($tags) OR `lid` IN ($lid) ORDER BY `time` DESC LIMIT 8"; $stmt = $pdo->prepare($tag_sql); $stmt->execute(); $tags_v = $stmt->fetchAll(PDO::FETCH_ASSOC); $smarty -> assign("r_v",$tags_v);}$tags_num = count($tags_v);if ($tags_num < 8 ) { $now_v = ""; foreach ($tags_v as $key => $value) { $now_v .= $value['vid'].","; } $now_v=substr("$now_v",0,-1); $need = 8-$tags_num; $typeid = $data["typeid"]; $typeid_sql = "SELECT * FROM `content` WHERE `typeid` = '$typeid' AND `vid` NOT IN ($now_v) ORDER BY `time` DESC LIMIT $need"; $stmt = $pdo->prepare($typeid_sql); $stmt->execute(); $typeid_v = $stmt->fetchAll(PDO::FETCH_ASSOC); $smarty -> assign("r_tv",$typeid_v);}
sql用or、not in本来就不好;
如果数据不需要太及时的话
把你3条sql语句组合好的数据缓存一段时间(半小时、一小时、甚至再长一点也可以)
因为你的数据都是死数据,没有浏览量,评论量等等
sql用or、not in本来就不好;
如果数据不需要太及时的话
把你3条sql语句组合好的数据缓存一段时间(半小时、一小时、甚至再长一点也可以)
因为你的数据都是死数据,没有浏览量,评论量等等
这个我也了解
但更想知道的是,如果按照更有关的排得更前
就是先排TAG 再排LID 最后再排同类其他文章
莫非只能用二楼的方法?
你的 意思是不是如果要10条tag,就先取10条tag,不够再取有lib,接着不够再取有type的?
如果是这样的话, 你的sql是不是会有问题!
你的 意思是不是如果要10条tag,就先取10条tag,不够再取有lib,接着不够再取有type的?
如果是这样的话, 你的sql是不是会有问题!
是的
2楼暂时做了个简单的
暂时先不分tag和lid
不够再取type
以及2楼用8条做测试
是否有更好的做法?
用全文检索来做

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Kedudukan Utama Sains Komputer Kebangsaan 2024CSRankings baru sahaja dikeluarkan! Tahun ini, dalam ranking universiti CS terbaik di Amerika Syarikat, Carnegie Mellon University (CMU) berada di antara yang terbaik di negara ini dan dalam bidang CS, manakala University of Illinois di Urbana-Champaign (UIUC) telah menduduki tempat kedua selama enam tahun berturut-turut. Georgia Tech menduduki tempat ketiga. Kemudian, Universiti Stanford, Universiti California di San Diego, Universiti Michigan, dan Universiti Washington terikat di tempat keempat di dunia. Perlu diingat bahawa kedudukan MIT jatuh dan jatuh daripada lima teratas. CSRankings ialah projek ranking universiti global dalam bidang sains komputer yang dimulakan oleh Profesor Emery Berger dari Pusat Pengajian Sains Komputer dan Maklumat di Universiti Massachusetts Amherst. Kedudukan adalah berdasarkan objektif

1. Bagaimanakah anda boleh membuat wang dengan menerbitkan artikel di Toutiao hari ini? Bagaimana untuk mendapatkan lebih banyak pendapatan dengan menerbitkan artikel di Toutiao hari ini! 1. Aktifkan hak dan kepentingan asas: Artikel asal boleh memperoleh keuntungan melalui pengiklanan dan video mestilah asli dalam mod skrin mendatar untuk memperoleh keuntungan. 2. Aktifkan hak 100 peminat: jika bilangan peminat mencecah 100 peminat ke atas, anda boleh mendapat keuntungan daripada tajuk mikro, ciptaan Soal Jawab asal dan Soal Jawab. 3. Menegaskan karya asli: Karya asal termasuk artikel, tajuk mikro, soalan, dsb., dan dikehendaki melebihi 300 patah perkataan. Sila ambil perhatian bahawa jika karya yang diciplak secara haram diterbitkan sebagai karya asli, mata kredit akan ditolak, malah sebarang keuntungan akan ditolak. 4. Ketegakan: Apabila menulis artikel dalam bidang profesional, anda tidak boleh menulis artikel merentas bidang sesuka hati Anda tidak akan mendapat cadangan yang sesuai, anda tidak akan dapat mencapai profesionalisme dan ketepatan kerja, dan sukar untuk menarik peminat. dan pembaca. 5. Aktiviti: aktiviti tinggi,

Pemprosesan borang PHP: pengisihan dan pemeringkatan data borang Dalam pembangunan web, borang ialah kaedah input pengguna yang biasa. Selepas kami mengumpul data borang daripada pengguna, kami biasanya perlu memproses dan menganalisis data tersebut. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengisih dan menyusun data borang untuk memaparkan dan menganalisis data yang diserahkan pengguna dengan lebih baik. 1. Pengisihan data borang Apabila kami mengumpul data borang yang diserahkan oleh pengguna, kami mungkin mendapati bahawa susunan data tidak semestinya memenuhi keperluan kami. Bagi mereka yang perlu dipaparkan atau dibahagikan mengikut peraturan tertentu

Kedudukan dan fungsi perbandingan carta statistik Vue dilaksanakan dalam bidang visualisasi data Carta statistik ialah cara yang intuitif dan jelas untuk memaparkan data. Sebagai rangka kerja bahagian hadapan yang popular, Vue menyediakan pelbagai alatan dan komponen untuk melaksanakan pelbagai carta. Artikel ini akan memperkenalkan cara menggunakan Vue untuk melaksanakan fungsi kedudukan dan perbandingan carta statistik. Sebelum bermula, kami perlu memasang Vue dan perpustakaan carta yang berkaitan. Kami akan menggunakan Chart.js sebagai perpustakaan carta, yang menyediakan jenis carta yang kaya dan fungsi interaktif. C boleh dipasang melalui arahan berikut

Pengenalan kepada penulisan asas dan penggunaan fungsi panggil balik Java: Dalam pengaturcaraan Java, fungsi panggil balik adalah corak pengaturcaraan biasa Melalui fungsi panggil balik, kaedah boleh dihantar sebagai parameter kepada kaedah lain, dengan itu mencapai panggilan tidak langsung kaedah tersebut. Penggunaan fungsi panggil balik adalah sangat biasa dalam senario seperti didorong peristiwa, pengaturcaraan tak segerak dan pelaksanaan antara muka. Artikel ini akan memperkenalkan penulisan asas dan penggunaan fungsi panggil balik Java, dan memberikan contoh kod khusus. 1. Definisi fungsi panggil balik Fungsi panggil balik ialah fungsi khas yang boleh digunakan sebagai parameter

Penjelasan terperinci tentang cara menulis tanda kurang daripada dalam MyBatis MyBatis ialah rangka kerja lapisan kegigihan yang sangat baik yang digunakan secara meluas dalam pembangunan Java. Dalam proses menggunakan MyBatis untuk operasi pangkalan data, kami sering menggunakan tanda kurang daripada (

Pendedahan eksklusif! Kedudukan terkini pemproses Snapdragon Dengan perkembangan pesat peranti mudah alih seperti telefon pintar, pemproses, sebagai cip teras peranti mudah alih, juga sentiasa berkembang dan menaik taraf. Sebagai salah satu pemproses paling popular di pasaran, pemproses Snapdragon Qualcomm telah menarik perhatian ramai. Pemproses Snapdragon sentiasa menduduki tempat dalam pasaran pemproses peranti mudah alih dengan prestasi cemerlang mereka, kawalan penggunaan kuasa dan integrasi tinggi. Jadi, antara banyak pemproses Snapdragon, yang mana satu yang terbaik? Artikel ini akan mendedahkan rahsia pemproses Snapdragon untuk anda

Syiling SOL ialah token asli rangkaian Solana Ia telah dilancarkan pada 23 Mac 2020, dan berjaya dimasukkan ke dalam 10 teratas dalam jumlah nilai pasaran fungsi utama Iaitu pertaruhan, tadbir urus dan yuran transaksi. Menurut laporan terbaru, rangkaian Solana adalah blockchain terpantas pada masa ini, yang sekali lagi telah menarik perhatian pasaran dan menjadikan mata wang SOL sebagai pilihan pelaburan yang popular. Sesetengah pelabur juga mungkin ingin tahu, adakah SOL, yang mempunyai kekuatan teknikal dan pembangunan pasaran dalam talian, mata wang arus perdana? Berdasarkan data semasa, SOL dianggap sebagai mata wang arus perdana Editor akan menerangkannya secara terperinci di bawah. Adakah SOL mata wang arus perdana? SOL ialah mata wang arus perdana Menurut data rasmi, harga semasa mata wang SOL ialah 140.3
