日期:2014-05-18  浏览次数:20699 次

多关键字模糊查询后进行匹配排序显示的问题。
多关键字模糊查询后进行匹配排序显示的问题。

问题描述:

数据库中某表(article表)有五条记录,标题(title)如下:
1、上海哪有好吃的川菜?
2、想吃川菜了,哪里有?
3、请告诉我上海徐家汇地区好吃的川菜?
4、什么东西最好吃?
5、上海的天气怎么样?

待搜索的多关键字为:上海   徐家汇   川菜

可以看到:
第一条记录的标题可以匹配到两个关键字,“上海   川菜”;
第二条记录的标题可以匹配到一个关键字,“川菜”;
第三条记录的标题可以匹配到三个关键字,“上海   徐家汇   川菜”;
第四条记录的标题不能匹配到任何一个关键字;
第五条记录的标题可以匹配到一个关键字,“上海”;

那么,在显示查询结果的时候,要求按对关键字匹配数,由多到少排列显示,即按如下的顺序显示:

搜索“上海   徐家汇   川菜”,结果如下:

3、请告诉我上海徐家汇地区好吃的川菜?
1、上海哪有好吃的川菜?
2、想吃川菜了,哪里有?
5、上海的天气怎么样?
(其中2和5的顺序没有关系,因为它们都只能匹配到一个关键字)

这样就能把最匹配查询关键字的结果放在前面显示,由多到少,而只能匹配到其中任何一个关键字的记录放在后在显示。

请问用纯SQL语句怎么实现这样的需求,不能用存储过程和临时表等其它方法。



------解决方案--------------------
如果你用数据库的模糊查询方式效率会很低,建议使用数据库的全文检索
或者lucene
------解决方案--------------------
没太明白 
select name from table where name like '%上海% ' or name like '%徐家汇% ' or name like '%川菜% '
  看看行吗
------解决方案--------------------
为什么 不把符合条件的结果全部导入结果集 到JAVA中间来处理呢