1.1 什么是Lucene
Lucene是apache下的一个开源的全文检索引擎工具包。它为软件开发人员提供一个简单易用的工具包(类库),以方便的在目标系统中实现全文检索的功能。
1.2 全文检索的应用场景
1.2.1 搜索引擎
©注意:
Lucene和搜索引擎是不同的,Lucene是一套用java或其它语言写的全文检索的工具包。它为应用程序提供了很多个api接口去调用,可以简单理解为是一套实现全文检索的类库。搜索引擎是一个全文检索系统,它是一个单独运行的软件系统。
1.2.2 站内搜索(关注)
1.3 全文检索定义
全文检索首先将要查询的目标文档中的词提取出来,组成索引,通过查询索引达到搜索目标文档的目的。这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。
2 Lucene实现全文检索的流程
全文检索的流程分为两大部分:索引流程、搜索流程。
- 索引流程:即采集数据à构建文档对象à分析文档(分词)à创建索引。
- 搜索流程:即用户通过搜索界面à创建查询à执行搜索,搜索器从索引库搜索à渲染搜索结果。
3 入门程序
3.1.1 第一步:添加jar包
入门程序只需要添加以下jar包:
- mysql5.1驱动包:mysql-connector-java-5.1.7-bin.jar
- 核心包:lucene-core-4.10.3.jar
- 分析器通用包:lucene-analyzers-common-4.10.3.jar
- 查询解析器包:lucene-queryparser-4.10.3.jar
3.1.2 PO,DAO以及测试代码
1 package cn.xjy.po ; 2 3 public class Book { 4 5 // 图书ID 6 private Integer id ; 7 // 图书名称 8 private String name ; 9 // 图书价格 10 private Float price ; 11 // 图书图片 12 private String pic ; 13 // 图书描述 14 private String description ; 15 16 public Book() {} 17 18 public Book(Integer id, String name, Float price, String pic, String description) { 19 super() ; 20 this.id = id ; 21 this.name = name ; 22 this.price = price ; 23 this.pic = pic ; 24 this.description = description ; 25 } 26 27 public Integer getId() { 28 return id ; 29 } 30 31 public void setId(Integer id) { 32 this.id = id ; 33 } 34 35 public String getName() { 36 return name ; 37 } 38 39 public void setName(String name) { 40 this.name = name ; 41 } 42 43 public Float getPrice() { 44 return price ; 45 } 46 47 public void setPrice(Float price) { 48 this.price = price ; 49 } 50 51 public String getPic() { 52 return pic ; 53 } 54 55 public void setPic(String pic) { 56 this.pic = pic ; 57 } 58 59 public String getDescription() { 60 return description ; 61 } 62 63 public void setDescription(String description) { 64 this.description = description ; 65 } 66 67 @Override 68 public String toString() { 69 return "Book [> pic 70 + ", description=" + description + "]" ; 71 } 72 73 }