项目代码:链接:http://pan.baidu.com/s/1qXVcfCw 密码:apw1

01 回顾索引

  定义:索引是对数据库表中一列或多列的值进行排序的一种结构

  目的:加快对数据库表中记录的查询

  特点:以空间换取时间,提高查询速度快

java深入探究14-lucene

 

02 体验百度搜索与原理图

java深入探究14-lucene

java深入探究14-lucene

java深入探究14-lucene

 


03 什么是Lucene

  Lucene是apache软件基金会发布的一个开放源代码的全文检索引擎工具包,由资深全文检索专家Doug Cutting所撰写,它是一个全文检索引擎的架构,提供了完整的创建索引和查询索引,以及部分文本分析的引擎,Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎,Lucene在全文检索领域是一个经典的祖先,现在很多检索引擎都是在其基础上创建的,思想是相通的。

即:Lucene是根据关健字来搜索的文本搜索工具,只能在某个网站内部搜索文本内容,不能跨网站搜索


04 Lucene通常用在什么地方

  Lucece不能用在互联网搜索(即像百度那样),只能用在网站内部的文本搜索(即只能在CRM,RAX,ERP内部使用),但思想是相通的。

java深入探究14-lucene

 


05 Lucene中存的什么内容

  Lucene中存的就是一系列的二进制压缩文件和一些控制文件,它们位于计算机的硬盘上,

这些内容统称为索引库,索引库有二部份组成:

(1)原始记录

     存入到索引库中的原始文本,例如:小平非常的聪明

(2)词汇表

     按照一定的拆分策略(即分词器)将原始记录中的每个字符拆开后,存入一个供将来搜索的表


06 为什么网站内部有些地方要用Lucene来索搜,确不全用SQL来搜索

  (1)SQL只能针对数据库表搜索,不能直接针对硬盘上的文本搜索

  (2)SQL没有相关度排名

  (3)SQL搜索结果没有关健字高亮显示

  (4)SQL需要数据库的支持,数据库本身需要内存开销较大,例如:Oracle

  (5)SQL搜索有时较慢,尤其是数据库不在本地时,超慢,例如:Oracle


07 书写代码使用Lucene的流程图

java深入探究14-lucene

 

java深入探究14-lucene

  创建索引库:

    1)  创建JavaBean对象

    2)  创建Docment对象

    3)  将JavaBean对象所有的属性值,均放到Document对象中去,属性名可以和JavaBean相同或不同

    4)  创建IndexWriter对象

    5)  将Document对象通过IndexWriter对象写入索引库中

    6)  关闭IndexWriter对象

  根据关键字查询索引库中的内容:

    1)  创建IndexSearcher对象

    2)  创建QueryParser对象

    3)  创建Query对象来封装关键字

    4)  用IndexSearcher对象去索引库中查询符合条件的前100条记录,不足100条记录的以实际为准

    5)  获取符合条件的编号

    6)  用indexSearcher对象去索引库中查询编号对应的Document对象

    7)  将Document对象中的所有属性取出,再封装回JavaBean对象中去,并加入到集合中保存,以备将之用


*****08 Lucene快速入门

  步一:创建javaweb工程,取名叫lucene-day01

  步二:导入Lucene相关的jar包

      lucene-core-3.0.2.jar【Lucene核心】

      lucene-analyzers-3.0.2.jar【分词器】

      lucene-highlighter-3.0.2.jar【Lucene会将搜索出来的字,高亮显示,提示用户】

      lucene-memory-3.0.2.jar【索引库优化策略】

  步三:创建包结构

         cn.itcast.javaee.lucene.entity

         cn.itcast.javaee.lucene.firstapp

         cn.itcast.javaee.lucene.secondapp

         cn.itcast.javaee.lucene.crud

         cn.itcast.javaee.lucene.fy

         cn.itcast.javaee.lucene.utils

         。。 。。 。

  步四:创建JavaBean类

public class Article {
    private Integer id;//标题
    private String title;//标题
    private String content;//内容
    public Article(){}
    public Article(Integer id, String title, String content) {
        this.id = id;
        this.title = title;
        this.content = content;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-23
  • 2023-01-30
  • 2021-04-05
猜你喜欢
  • 2021-10-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案