类百度 检索功能的 sql 开发(简单实现)
恩。。。进来看看的 朋友。。。。。。。。。。好!
搜索是我们开发中经常遇到的问题。。。只是简单的使用 like%% 不能解决很多问题
不知道 大家自己写的方法怎么样。。
下面是我写的一个 存储过程 简单功能:
简单实现类baidu模糊查询等的功能:
数据库中有数据 : '月光网络科技' 和’一样的月光,空气变得有点闷‘。
输入:’网络‘ 。 时,搜索结果 :'月光网络科技'
输入:’网络科技发展公司‘ 。 搜索结果:'月光网络科技'
输入:’一样的泪水‘。 搜索结果:’一样的月光,空气变得有点闷‘
输入:‘今天阴天,有点闷’ 搜索结果:’一样的月光,空气变得有点闷‘
如果是 输入:’天天网络科技发展‘ , 怎么能提取里面 ’网络‘、‘科技’或是‘网络科技’ 进行select ?????
在优先检索结束的时候。。。怎么能提取中间词语 再次进行 检索?????
欢迎高手 指点。。。下面是我写的一个简单的 存储过程:
Create procedure Search
@search varchar(50)
as
declare @key varchar(50)
declare @i int
set @i=len(@search)
while @i>0
begin
set @key=left(@search,@i)
set @i=@i-1
if
(select count(*) from table_name where a like '%'+@key+'%' or b like '%'+@key+'%' or c like '%'+@key+'%' or d like '%'+@key+'%' or e like '%'+@key+'%' )>0
begin
select *,KKey=(@key) from table_name where a like '%'+@key+'%' or b like '%'+@key+'%' or c like '%'+@key+'%' or d like '%'+@key+'%' or e like '%'+@key+'%' order by ID desc
break
end
else
begin
set @key=right(@search,@i)
if
(select count(*) from table_name where a like '%'+@key+'%' or b like '%'+@key+'%' or c like '%'+@key+'%' or d like '%'+@key+'%' or e like '%'+@key+'%' )>0
begin
select *,KKey=(@key) from table_name where a like '%'+@key+'%' or b like '%'+@key+'%' or c like '%'+@key+'%' or d like '%'+@key+'%' or e like '%'+@key+'%' order by ID desc
break
end
end
end
RETURN
有兴趣的朋友交流啊。。。。。呵呵