多关键字模糊查询后进行匹配排序显示的问题。问题描述:数据库中某表(article表)有五条记录,标题(title)如下:
1、上海哪有好吃的川菜?
2、想吃川菜了,哪里有?
3、请告诉我上海徐家汇地区好吃的川菜?
4、什么东西最好吃?
5、上海的天气怎么样?待搜索的多关键字为:上海 徐家汇 川菜可以看到:
第一条记录的标题可以匹配到两个关键字,“上海 川菜”;
第二条记录的标题可以匹配到一个关键字,“川菜”;
第三条记录的标题可以匹配到三个关键字,“上海 徐家汇 川菜”;
第四条记录的标题不能匹配到任何一个关键字;
第五条记录的标题可以匹配到一个关键字,“上海”;那么,在显示查询结果的时候,要求按对关键字匹配数,由多到少排列显示,即按如下的顺序显示:搜索“上海 徐家汇 川菜”,结果如下:3、请告诉我上海徐家汇地区好吃的川菜?
1、上海哪有好吃的川菜?
2、想吃川菜了,哪里有?
5、上海的天气怎么样?
(其中2和5的顺序没有关系,因为它们都只能匹配到一个关键字)这样就能把最匹配查询关键字的结果放在前面显示,由多到少,而只能匹配到其中任何一个关键字的记录放在后在显示。请问用纯SQL语句怎么实现这样的需求,不能用存储过程和临时表等其它方法。

解决方案 »

  1.   

    如果你用数据库的模糊查询方式效率会很低,建议使用数据库的全文检索
    或者lucene
      

  2.   

    没太明白 
    select name from table where name like'%上海%' or name like'%徐家汇%' or name like'%川菜%'
      看看行吗
      

  3.   

    为什么 不把符合条件的结果全部导入结果集 到JAVA中间来处理呢
      

  4.   

    为什么 不把符合条件的结果全部导入结果集 到JAVA中间来处理呢
    -------------
    那你怎么判断匹配关键字的次数?
      

  5.   

    是这样的 你把所有只要有一个单词符合匹配的记录全部导入结果集中间,就等于数据库的查询只是进行了一次范围缩小,然后对于每一条记录 在JAVA中间再进行匹配单词数目的计算,毕竟JAVA 语言的功能 比SQL要强大很多  相对就比较简单了
      

  6.   

    佩服佩服,LS牛人,一个超多字数的文章你怎么导,N个超多字数的文章怎么导,倒入后怎么匹配,你那么牛的人算法一定无敌了,不知道你看了lucene后,会有什么感触