回答

收藏

按一组关键字的出现对sql结果进行排序

技术问答 技术问答 241 人阅读 | 0 人回复 | 2023-09-12

我正在尝试为我的网站做一个小的搜索引擎。首先,用户输入一些关键字,然后转到使用此代码的结果页:
9 `# f) a6 T: S$result = array();; F  s% |/ O$ S1 e  Y7 V
$keyword_tokens = explode(' ', $keywords);
: g$ D1 S4 C  D) G; Y; P$keyword_tokens = array_map(
  f7 O) V7 g( {' V; @. |: U    function($keywords) {
1 @; |# _, c( H9 w" K& R# S        return mysql_real_escape_string(trim($keywords));
+ F8 W* N! M/ {' x: U$ f$ l4 M! V    },
1 y1 z% t  h- v. i    $keyword_tokens
7 z* d; @/ U- T0 Z; w) z);
  D  G1 N. x  |6 M$sql = "SELECT * FROM search_table WHERE concat(title, description) LIKE '%";
8 y$ ?" |: a  f- f$sql .= implode("%' OR concat(title, description) LIKE '%", $keyword_tokens) . "%' ORDER BY instr(description, '$keywords') DESC, instr(title, '$keywords') DESC";* p" N, {$ X$ {& s3 H- l
$result=mysql_query($sql);# h4 V( H$ ~" R2 O
此代码允许搜索用户请求的关键字并按$ keywords进行排序,因此可以按关键字组的完整确切字符串进行排序…2 c8 j; r% a& I# p
我想做的是按照每个关键字的出现次数排序结果。例如,如果我的sql结果中的一行包含5个关键字,而其他3个关键字等,则应首先出现5个关键字。我正在搜索按更多匹配关键字对结果进行排序。
; i) N* t9 m3 [/ v3 F3 ^4 v' @2 F希望一切都是可以理解的…
4 d6 e: r+ q1 i( {. ]. V$ I帮助将不胜感激!' c, {( o0 B; J# S* r3 E; Y
                ; i0 X6 q, U) o  |# G
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则