您的位置:首页 > 数据库 > MySQL

mysql 关键字匹配算法 SQL 实例

2009-09-24 11:41 447 查看
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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: