mysql 关键字匹配算法 SQL 实例

来源:互联网 发布:移动网络打dnf团很卡 编辑:程序博客网 时间:2024/05/01 21:30

import java.lang.reflect.Array;

public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   String[] q = { "xuyz", "test", "123" };// 关键字
   String[] f = { "MC", "SM" };// 查询的字段mc=产品名,sm=产品描述
   String[] s = { "4", "2" }; // 权重,mc字段匹配积分4分,sm字段匹配积2分,最后按积分排序
   String[] scoreAry = new String[6];
   String[] clauseAry = new String[6];
   int c = 0;
   for (int i = 0; i < q.length; i++) {
    for (int j = 0; j < f.length; j++) {
     clauseAry[c] = " ( " + f[j] + " LIKE '%" + q[i] + "%') ";
     scoreAry[c] = " IF(LOCATE('" + q[i] + "', " + f[j] + "), "
       + s[j] + ", 0) ";
     c++;
    }
   }

   for (String str : clauseAry) {
    System.out.println("clauseAry ::: " + str);
   }
   for (String str : scoreAry) {
    System.out.println("scoreAry ::: " + str);
   }

   String score = "";
   String clause = "";
   for (int i = 0; i < scoreAry.length; i++) {
    score = score + scoreAry[i] + "+";
   }
   for (int i = 0; i < clauseAry.length; i++) {
    clause = clause + clauseAry[i] + " OR ";
   }

   String sql = "SELECT mc,sm,("
     + score.substring(0, score.length() - 1)
     + ") AS score FROM tdmgbjkzk WHERE("
     + clause.substring(0, clause.length() - 3)
     + ") ORDER BY score DESC";

   System.out.print(sql);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

}

原创粉丝点击