大早上的,发个技术贴。顶者有分,对鄙人有用的,另开贴给分。

时间:2021-10-24 21:29:12
对关键字进行搜索的问题。
在数据库里一列,保存关键字的。在这列中,每个关键字用“,”隔开。如:关键字1,关键字2,关键字3,关键字4

如果单搜一个关键字,很好解决,like一个OK了。

如果一下搜多个关键字,如何解决?按匹配最多少排序。

如果搜索“关键字1,关键字2”,匹配为2,
搜索“关键字1,关键字5”,匹配为1;

想写个函数,进行匹配一下,但我的MYSQL技术有限,唉。

还要对关键字搜索多少进行排序,这个好解决。这个好解决,建个表,搜索一次,关键字数量加1.

我用的是MYSQL。

谢谢!

119 个解决方案

#1


不知道说清了没有~

#2


up

#3


帮顶

#4


顶一下先

#5


mysql没用过

#6


看懂了题目

不过不会玩数据库,帮顶

#7


只能帮顶了

#8


帮顶

#9


帮顶..关注

#10


引用 1 楼 guojh021 的回复:
不知道说清了没有~


不是特别清楚

#11


不懂

帮等

#12


看来我只能顶了

#13


不会,帮顶

#14


引用 11 楼 dbger 的回复:
不懂 

帮等

#15


引用 6 楼 oo 的回复:
看懂了题目 

不过不会玩数据库,帮顶

#16


引用 10 楼 szadek 的回复:
引用 1 楼 guojh021 的回复:
不知道说清了没有~ 
 

不是特别清楚


哪个不清楚?

#17


帮顶,关注......

#18


引用 14 楼 dayizhixiaotutu 的回复:
引用 11 楼 dbger 的回复:
不懂  

帮等 


顶可以,等嘛,我自己来~

#19


  我承诺:不信谣,不传谣,不造谣!

#20


  我承诺:不信谣,不传谣,不造谣!

#21


帮顶

#22


如果解决不了 程序中处理吧

#23


不知道MYSQL可不可以用 IN
SQL2000 可以这用
关键字 IN(关键字1,关键字2...)

#24


可以写个存储过程,用IF ELSE 做判断就可以了。

#25


顺便接分升级

#26


多给点分快生四个三角了。呵呵。问题再问。这个比较容易实现。

#27


顶一下先

#28


引用 25 楼 Jerry289 的回复:
顺便接分升级

#29


引用 15 楼 lili830209 的回复:
引用 6 楼 oo 的回复:
看懂了题目  

不过不会玩数据库,帮顶 

河马来了啊,昨天怎么生病了?

#30


引用 1 楼 guojh021 的回复:
不知道说清了没有~

表述不清楚!

#31


引用 5 楼 ming4098 的回复:
mysql没用过


与SQl有什么大的区别?

#32


ss

#33


不懂

#34


帮顶

#35


帮顶..关注

#36


我想你问的这个问题属于类似百度搜索技术

#37


select * from tab where a1 like M and a2 like M and a3 like M

#38


引用 30 楼 xql80329 的回复:
引用 1 楼 guojh021 的回复:
不知道说清了没有~ 
 
表述不清楚!

哦。
看来小学语文得重修一下了~

#39


引用 36 楼 xql80329 的回复:
我想你问的这个问题属于类似百度搜索技术

差不多吧,呵

#40


引用 38 楼 guojh021 的回复:
引用 30 楼 xql80329 的回复:
引用 1 楼 guojh021 的回复:
不知道说清了没有~

表述不清楚!

哦。
看来小学语文得重修一下了~

#41


引用 37 楼 Freaky 的回复:
SQL codeselect * from tab where a1 like M and a2 like M and a3 like M

这种方法恐怕不行吧。
三个关键字 a1,a2,a3,如果匹配两个,这样是搜不出来的。

#42


引用 40 楼 L___________________ 的回复:
引用 38 楼 guojh021 的回复:
引用 30 楼 xql80329 的回复: 
引用 1 楼 guojh021 的回复: 
不知道说清了没有~ 

表述不清楚! 

哦。 
看来小学语文得重修一下了~ 

http://lucene.apache.org/java/docs/index.html
这个是java开源的搜索引擎技术  可以 看看!

#43


谢谢42楼的xql80329 

我去看看~

#44


晕,E文的啊~
得把字典翻出来~

#45


这样可以不。。。
(case when a1 like M then 1 else 0 end) + (case when a2 like M then 1 else 0 end) + (case when a3 like M then 1 else 0 end)
[img=http://p.blog.csdn.net/images/p_blog_csdn_net/zswang/%E6%89%AE%E9%85%B7.gif]图[/img]

#46


帮顶

#47


引用 45 楼 zswang 的回复:
这样可以不。。。 

SQL code(case when a1 like M then 1 else 0 end) + (case when a2 like M then 1 else 0 end) + (case when a3 like M then 1 else 0 end)


貌似可以。
但把关键字写成这样的SQL语句是个问题

#48


引用 44 楼 guojh021 的回复:
晕,E文的啊~ 
得把字典翻出来~

恩,是英文的.
装个金山词霸   也不难看懂!

#49


引用 47 楼 guojh021 的回复:
SQL code(case when a1 like M then 1 else 0 end) + (case when a2 like M then 1 else 0 end) + (case when a3 like M then 1 else 0 end) 
 

这个不能从根本上解决问题

#50


引用 3 楼 ming4098 的回复:
帮顶

#1


不知道说清了没有~

#2


up

#3


帮顶

#4


顶一下先

#5


mysql没用过

#6


看懂了题目

不过不会玩数据库,帮顶

#7


只能帮顶了

#8


帮顶

#9


帮顶..关注

#10


引用 1 楼 guojh021 的回复:
不知道说清了没有~


不是特别清楚

#11


不懂

帮等

#12


看来我只能顶了

#13


不会,帮顶

#14


引用 11 楼 dbger 的回复:
不懂 

帮等

#15


引用 6 楼 oo 的回复:
看懂了题目 

不过不会玩数据库,帮顶

#16


引用 10 楼 szadek 的回复:
引用 1 楼 guojh021 的回复:
不知道说清了没有~ 
 

不是特别清楚


哪个不清楚?

#17


帮顶,关注......

#18


引用 14 楼 dayizhixiaotutu 的回复:
引用 11 楼 dbger 的回复:
不懂  

帮等 


顶可以,等嘛,我自己来~

#19


  我承诺:不信谣,不传谣,不造谣!

#20


  我承诺:不信谣,不传谣,不造谣!

#21


帮顶

#22


如果解决不了 程序中处理吧

#23


不知道MYSQL可不可以用 IN
SQL2000 可以这用
关键字 IN(关键字1,关键字2...)

#24


可以写个存储过程,用IF ELSE 做判断就可以了。

#25


顺便接分升级

#26


多给点分快生四个三角了。呵呵。问题再问。这个比较容易实现。

#27


顶一下先

#28


引用 25 楼 Jerry289 的回复:
顺便接分升级

#29


引用 15 楼 lili830209 的回复:
引用 6 楼 oo 的回复:
看懂了题目  

不过不会玩数据库,帮顶 

河马来了啊,昨天怎么生病了?

#30


引用 1 楼 guojh021 的回复:
不知道说清了没有~

表述不清楚!

#31


引用 5 楼 ming4098 的回复:
mysql没用过


与SQl有什么大的区别?

#32


ss

#33


不懂

#34


帮顶

#35


帮顶..关注

#36


我想你问的这个问题属于类似百度搜索技术

#37


select * from tab where a1 like M and a2 like M and a3 like M

#38


引用 30 楼 xql80329 的回复:
引用 1 楼 guojh021 的回复:
不知道说清了没有~ 
 
表述不清楚!

哦。
看来小学语文得重修一下了~

#39


引用 36 楼 xql80329 的回复:
我想你问的这个问题属于类似百度搜索技术

差不多吧,呵

#40


引用 38 楼 guojh021 的回复:
引用 30 楼 xql80329 的回复:
引用 1 楼 guojh021 的回复:
不知道说清了没有~

表述不清楚!

哦。
看来小学语文得重修一下了~

#41


引用 37 楼 Freaky 的回复:
SQL codeselect * from tab where a1 like M and a2 like M and a3 like M

这种方法恐怕不行吧。
三个关键字 a1,a2,a3,如果匹配两个,这样是搜不出来的。

#42


引用 40 楼 L___________________ 的回复:
引用 38 楼 guojh021 的回复:
引用 30 楼 xql80329 的回复: 
引用 1 楼 guojh021 的回复: 
不知道说清了没有~ 

表述不清楚! 

哦。 
看来小学语文得重修一下了~ 

http://lucene.apache.org/java/docs/index.html
这个是java开源的搜索引擎技术  可以 看看!

#43


谢谢42楼的xql80329 

我去看看~

#44


晕,E文的啊~
得把字典翻出来~

#45


这样可以不。。。
(case when a1 like M then 1 else 0 end) + (case when a2 like M then 1 else 0 end) + (case when a3 like M then 1 else 0 end)
[img=http://p.blog.csdn.net/images/p_blog_csdn_net/zswang/%E6%89%AE%E9%85%B7.gif]图[/img]

#46


帮顶

#47


引用 45 楼 zswang 的回复:
这样可以不。。。 

SQL code(case when a1 like M then 1 else 0 end) + (case when a2 like M then 1 else 0 end) + (case when a3 like M then 1 else 0 end)


貌似可以。
但把关键字写成这样的SQL语句是个问题

#48


引用 44 楼 guojh021 的回复:
晕,E文的啊~ 
得把字典翻出来~

恩,是英文的.
装个金山词霸   也不难看懂!

#49


引用 47 楼 guojh021 的回复:
SQL code(case when a1 like M then 1 else 0 end) + (case when a2 like M then 1 else 0 end) + (case when a3 like M then 1 else 0 end) 
 

这个不能从根本上解决问题

#50


引用 3 楼 ming4098 的回复:
帮顶