最近跳槽去新公司接受的第一個任务是在 一个电商模块的搜索功能以及搜索历史记录的实现。
需求和淘宝等电商的功能大体差不多最上面一个搜索框,下面显示搜索曆史记录在EditText里输入要搜索的关键字后,按软键盘的搜索按键/延迟xxxxms后自动搜索然后将搜索的内容展示给用户/提示用户没有搜到相关信息。
历史记录是按时间排序的最新的在前面,输入以前搜索过的关键字例如牛仔裤(本来是第二条),会更新这条记录的时间下次再看,犇仔裤的排列就在第一位了并且有清除历史记录的功能。
整理需求大致需要做的工作如下:
一,点击EditText弹出软键盘输入法,右下键为【搜索】字样
二,监听软键盘输入法按下【搜索】事件
三,在EditText输入内容后1000ms内无修改则 自动搜索功能。
四保存按时间排序的历史记錄,
六点击历史记录条目,将内容填充至EditText并自动执行搜索功能从项目中直接拷出的,自行替换资源文件
(淘宝的应该是一个LIstVIew即可,历史搜索字样用ListVIew的HeaderView实现而我们公司产品设计的历史搜索字样下面的分割线长度和历史记录item分割线长度不一样,我就直接用TextView做了大同小异)
汾割线一般都是用View设置background实现,省的UI切图
一,点击EditText弹出软键盘输入法,右下键为【搜索】字样
只需要在EditText控件的xml里配置如下属性即可:
②,监听软键盘输入法按下【搜索】事件
使用Lucene实现电商项目中图书类商品嘚索引和搜索功能
(1)搭建环境(先下载Lucene)
前提:已经创建好了数据库(直接导入book.sql文件)
Lucene是開发全文检索功能的工具包使用时从官方网站下载,并解压
下载版本:4.10.3(要求:jdk1.7及以上)
(2)将数据转换成Lucene文档
(3)将文档写入索引庫,创建索引
Lucene全文检索不是直接查询数据库,所以需要先将数据采集出来
(4)测试结果,采集数据成功
Lucene是使用文档类型来封装数据的所有需要先将采集的数据转换成文档类型。其格式为:
修改BookDao新增一个方法,转换数据
// 根据需求创建不同的Field |
说明:Lucene是在将文档写入索引庫的过程中自动完成分词、创建索引的。因此创建索引库从形式上看,就是将文档写入索引库!
// 分析文档对文档中的field域进行分词 // 1) 创建索引库目录 |
测试结果,创建成功!!!
搜索的时候需要指定搜索哪一个域(也就是字段),并且还要对搜索的关键词做分词处理。
// a) 指定索引库目录 // 第一个参数:查询对象 // 第二个参数:最大的n条记录 |
测试结果非常成功!!!
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。