多关键字模糊查询后进行匹配排序显示的问题。
多关键字模糊查询后进行匹配排序显示的问题。
问题描述:
数据库中某表(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中间来处理呢