大数据 爬虫Python AI Sql

实际开发中关于模糊搜索的几种实现方式

2019-01-03  本文已影响0人  菜菜___

模糊搜索是社交平台、电商平台、搜索引擎等平台常见的功能。
写这篇文章前有两个问题:
问题一:在学校库里输入“北京 大学”,怎么样才能搜索到“北京大学“?
问题二:在学校库里输入“北京 大学”,怎么样才能搜索到“北京大学”“北京交通大学”“北京理工大学”“北京工业大学”“北京航空航天大学”等?
这两个问题里关键词都是“北京 大学”,中间有空格,而这种搜索的问题我们既可以用数据库语言实现,也可以在服务端进行处理。

使用SqlServer:

问题一:

select school_name from t_school where school_name = replace(school_name,' ','');

问题二:

select * from t_school where school_name like '北京'[^ ]'大学'
select * from t_school where school_name like '北京%大学'

使用Java:

问题一:
String str = " 北京 大学 ";
(1)去除所有空格,包括首尾、中间

 String str = str.replaceAll(" +", "");   
 System.out.println("str:"+str);   

注:str.trim()只能去除首尾空格
(2)利用正则匹配所有空格并替换,包括首尾、中间

 String str = str.replaceAll(" +", "");   
 System.out.println("str:"+str);   

(3)利用正则匹配所有空白字符(不限于空格)并替换,包括首尾、中间( \s 可以匹配空格、制表符、换页符等空白字符的其中任意一个)

String str = str.replaceAll("\\s*", "");   
System.out.println("str:"+str);

问题二:

String str="北京      大学";
String[] a=str.split("\\s+");
String[] aa=new String[]{"北京交通大学","北京理工大学","北京工业大学","北京航空航天大学","上海北京大学"};

(1)使用正则

Pattern regex = Pattern.compile("^"+a[0]+".*"+a[1]+"$");
for(int i=0;i<aa.length;i++){    
    System.out.println(regex.matcher(aa[i]).find());            
}

(2)字符串自带方法

for(int i=0;i<aa.length;i++){    
    if(aa[i].startsWith(a[0]) && aa[i].endsWith(a[1])){
        System.out.println(aa[i]);
    }
}

原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。

上一篇下一篇

猜你喜欢

热点阅读