목차
回复讨论(解决方案)
백엔드 개발 PHP 튜토리얼 「相关文章」结果是越相关排名越前的案例,求一个高效的写法

「相关文章」结果是越相关排名越前的案例,求一个高效的写法

Jun 23, 2016 pm 01:50 PM
작성방법 순위 기사 사례 관련된

我的文章系统,想按照多个件条下
,看看有什么可能性可做到

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条做测试

是否有更好的做法?

用全文检索来做

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

2024년 CSRankings 전국 컴퓨터 과학 순위 발표! CMU가 목록을 장악하고 MIT가 상위 5위에서 벗어났습니다. 2024년 CSRankings 전국 컴퓨터 과학 순위 발표! CMU가 목록을 장악하고 MIT가 상위 5위에서 벗어났습니다. Mar 25, 2024 pm 06:01 PM

2024CSRankings 전국 컴퓨터 공학 전공 순위가 방금 발표되었습니다! 올해 미국 최고의 CS 대학 순위에서는 카네기멜론대학교(CMU)가 CS 분야 전국 최고에 올랐고, 일리노이대학교 어바나-샴페인 캠퍼스(UIUC)가 1위를 차지했다. 6년 연속 2위를 기록했다. 조지아공대(Georgia Tech)가 3위를 차지했습니다. 이어 스탠퍼드대, 캘리포니아대 샌디에이고대, 미시간대, 워싱턴대가 공동 4위를 차지했다. MIT의 순위가 하락해 상위 5위권 밖으로 떨어졌다는 점은 주목할 만하다. CSRankings는 매사추세츠 대학교 Amherst 컴퓨터 및 정보 과학부의 Emery Berger 교수가 시작한 컴퓨터 과학 분야의 글로벌 대학 순위 프로젝트입니다. 순위는 객관적인 기준에 따라 결정됩니다.

오늘 Toutiao에 기사를 게시하여 어떻게 돈을 벌 수 있나요? 오늘 Toutiao에 기사를 게시하여 더 많은 수입을 얻는 방법! 오늘 Toutiao에 기사를 게시하여 어떻게 돈을 벌 수 있나요? 오늘 Toutiao에 기사를 게시하여 더 많은 수입을 얻는 방법! Mar 15, 2024 pm 04:13 PM

1. 오늘 Toutiao에 기사를 게시하여 어떻게 돈을 벌 수 있습니까? 오늘 Toutiao에 기사를 게시하여 더 많은 수입을 얻는 방법! 1. 기본 권익 활성화: 기사의 원본은 광고를 통해 수익을 얻을 수 있으며, 동영상은 가로 화면 모드에서 원본이어야 수익을 얻을 수 있습니다. 2. 팬 100명 권리 활성화: 팬 수가 100명 이상에 도달하면 마이크로 헤드라인, 오리지널 Q&A 작성, Q&A 수익을 얻을 수 있습니다. 3. 독창적인 작품을 고집하라: 독창적인 작품에는 기사, 마이크로 헤드라인, 질문 등이 포함되며, 300단어 이상이어야 합니다. 불법 표절 저작물을 원작으로 출판할 경우 크레딧 점수가 차감되며, 수익금도 차감되므로 주의하시기 바랍니다. 4. 수직성: 전문 분야에서 기사를 작성할 때 분야를 넘나들며 마음대로 기사를 작성할 수 없으며 적절한 추천을 받을 수 없으며, 작품의 전문성과 정확성을 확보할 수 없으며 팬을 유치하기가 어렵습니다. 그리고 독자들. 5. 활동: 높은 활동,

PHP 양식 처리: 양식 데이터 정렬 및 순위 지정 PHP 양식 처리: 양식 데이터 정렬 및 순위 지정 Aug 09, 2023 pm 06:01 PM

PHP 양식 처리: 양식 데이터 정렬 및 순위 지정 웹 개발에서 양식은 일반적인 사용자 입력 방법입니다. 사용자로부터 양식 데이터를 수집한 후에는 일반적으로 데이터를 처리하고 분석해야 합니다. 이 기사에서는 사용자가 제출한 데이터를 더 잘 표시하고 분석하기 위해 PHP를 사용하여 양식 데이터를 정렬하고 순위를 지정하는 방법을 소개합니다. 1. 양식 데이터 정렬 사용자가 제출한 양식 데이터를 수집할 때 데이터 순서가 반드시 요구 사항을 충족하지 않는 경우가 있습니다. 특정 규칙에 따라 표시하거나 구분해야 하는 경우

Java 콜백 함수의 기본 구문 및 적용 Java 콜백 함수의 기본 구문 및 적용 Jan 30, 2024 am 08:12 AM

Java 콜백 함수의 기본 작성 및 사용법 소개: Java 프로그래밍에서 콜백 함수는 일반적인 프로그래밍 패턴입니다. 콜백 함수를 통해 메소드를 매개변수로 다른 메소드에 전달하여 메소드를 간접적으로 호출할 수 있습니다. 콜백 함수의 사용은 이벤트 중심, 비동기 프로그래밍 및 인터페이스 구현과 같은 시나리오에서 매우 일반적입니다. 이 기사에서는 Java 콜백 함수의 기본 작성 및 사용법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 콜백 함수의 정의 콜백 함수는 매개변수로 사용할 수 있는 특수 함수입니다.

MyBatis에서 작음 기호를 작성하는 방법에 대한 자세한 설명 MyBatis에서 작음 기호를 작성하는 방법에 대한 자세한 설명 Feb 21, 2024 pm 08:36 PM

MyBatis에서 작음 기호를 작성하는 방법에 대한 자세한 설명 MyBatis는 Java 개발에 널리 사용되는 뛰어난 지속성 계층 프레임워크입니다. 데이터베이스 작업을 위해 MyBatis를 사용하는 과정에서 우리는 종종 보다 작은 기호(

Vue 통계 차트의 순위 및 비교 기능 구현 Vue 통계 차트의 순위 및 비교 기능 구현 Aug 26, 2023 am 09:45 AM

Vue 통계 차트의 순위 및 비교 기능은 데이터 시각화 분야에서 구현됩니다. 통계 차트는 데이터를 표시하는 직관적이고 명확한 방법입니다. 널리 사용되는 프런트엔드 프레임워크인 Vue는 다양한 차트를 구현하는 데 필요한 풍부한 도구와 구성 요소를 제공합니다. 이 글에서는 Vue를 사용하여 통계 차트의 순위 및 비교 기능을 구현하는 방법을 소개합니다. 시작하기 전에 Vue 및 관련 차트 라이브러리를 설치해야 합니다. 풍부한 차트 유형과 대화형 기능을 제공하는 차트 라이브러리로 Chart.js를 사용하겠습니다. C는 다음 명령을 통해 설치할 수 있습니다

독점공개! Snapdragon 프로세서의 최신 순위 독점공개! Snapdragon 프로세서의 최신 순위 Mar 21, 2024 pm 06:36 PM

독점공개! 스냅드래곤 프로세서 최신 순위 스마트폰 등 모바일 기기의 급속한 발전과 함께 모바일 기기의 핵심 칩인 프로세서 역시 끊임없이 진화하고 업그레이드되고 있습니다. 시장에서 가장 인기 있는 프로세서 중 하나인 Qualcomm의 Snapdragon 프로세서는 많은 주목을 받았습니다. Snapdragon 프로세서는 뛰어난 성능, 전력 소비 제어 및 높은 통합성을 바탕으로 모바일 기기 프로세서 시장에서 항상 자리를 지켜왔습니다. 그렇다면 수많은 Snapdragon 프로세서 중에서 어떤 프로세서가 가장 좋을까요? 이 기사에서는 Snapdragon 프로세서의 비밀을 공개합니다.

Tencent 회의에서 자신을 대기열 맨 뒤에 두는 방법에 대한 자세한 설명 Tencent 회의에서 자신을 대기열 맨 뒤에 두는 방법에 대한 자세한 설명 Apr 02, 2024 pm 03:10 PM

1. [휴대폰 메인 메뉴]를 열고 클릭하여 [Tencent Meeting Client]로 들어갑니다. 2. 소프트웨어를 연 후 [로그인]을 클릭하고 계정 번호를 입력해야 로그인할 수 있습니다. 3. 그런 다음 [회의 참가]를 클릭하고 회의 번호를 사용하여 빠르게 회의에 입장할 수 있습니다. 4. 팝업되는 메인 인터페이스에서 [회의 참가]를 클릭하여 회의에 입장합니다. 5. 입장 후 우측 하단의 [초대]를 클릭하면 다른 친구를 미팅에 초대할 수 있습니다. 6. 아래의 [초대 방법]을 선택하세요. 친구는 초대를 받은 후 모임에 참여할 수 있습니다. 7. 그런 다음 [종료] 옵션을 클릭하고 다시 입력하면 목록이 끝납니다.

See all articles