Lucene和solr基础使用介绍

       solr是对lucene的封装:
                1.lucene可以完成的功能,使用solr可以用更简单更方便的方法完成同样的功能。
Like  :  顺序扫描法
        从文档头一直扫描到文档尾,直到找到为止,速度很慢。
全文检索技术(倒排索引):
        作用:
                1.可以帮我们实现;类似于百度或者谷歌一样的搜索引擎
                2.可以帮我们实现类似京东或淘宝一样的站内商品搜索功能
                3.可以帮我们实现;类似贴吧或者论坛等一些站内搜索帖子的功能
                4.可以帮我们实现类似智能客服的功能
                5.智能机器人
        原理(特点):
                1.在搜索之前,先对关键词进行分词
                2.索引库:文档集合、索引目录    
                        a:增加文档的时候先对文档进行分词
                        b:将分的词放入索引目录中,并记录该词在哪些文档中出现了多少次
                        c:根据关键词分的词到索引库中去唯一匹配速度非常快。
                3.相关度排序:
                        a:一个词在这个文档中出现的次数越多,排序越靠前。
                4.一个词在很多文档中都出现了,那么就会降低这个词的权重值。
 
数据查询的方法:
        顺序扫描法
        倒排索引
 
添加流程:
        1.采集数据,从数据库中获取。
        2.创建文档对象Document
        3.创建域来存储要带出来的值。使用对象 Field   (new  TextField),需要带出来的几个值,就创建几个域对象。
        4.将创建出来的域放入到文档对象中。
        5.创建一个文档对象的集合。将每一次装好的文档对象放入到集合中。
        6.创建IndexWriter对象,用来写入对象到索引库,需要的参数是:
                a: 索引库要存储的地方,一个磁盘目录对象(Directory,一个接口,使用子类对象FSDirectory,磁盘对象)。
                b: 一个可以写入索引配置的对象。IndexWriterConfig对象。参数是一个是版本信息(Version.?),参数二是一个分词器对象。
        7.创建Directory对象、IndexWriterConfig对象。因为IndexWriterConfig对象的参数需要一个分词器对象。所以...
        8.创建分词器对象。Analyzer,也是一个接口,子类:StandardAnalyzer();这个子类只对英文分词有效。所以国人写了一个对中文有效的分词器对象  IKAnalyzer对象。
        9.将拿到的所有的文档对象写入到索引库中,使用IndexWriter对象添加Document对象。
        10.提交、关流。IndexWriter是一个流对象
查询流程:
        1.创建语法解析器QueryParser对象
                参数一:从哪个域值里面查
                参数二:分词器
        2.创建查询语法Query对象,使用语法解析器对象调用parse方法,执行查询语句,返回Query对象
        3.创建读索引的对象IndexReader,是一个接口,需要调用open方法来创建读索引的对象。
                参数是:创建磁盘对象,找到索引库的位置,调用的是open方法
        4.创建查询对象IndexSearcher.
        5.执行Query对象,使用search方法
                参数一:查询语句对象
                参数二:显示几条
        6.查询打过分的文档集合。使用TopDocs对象调用scoreDocs方法。返回一个数组。里面装的是要显示的前几条文档。
        7.使用indexSercher对象调用doc方法,通过Luncene自动生成的文档id来查找文档。(查找id等属性用的是索引库中的属性名来查找的)
        8.关流
 
分词器的使用时机:
        1.在创建索引库的时候
        2.在查询的时候
 
 
通用Mapper:
       接口继承Mapper接口,不用写方法,Mapper接口里面提供了方法,可以进行单表的查询。如果想要进行多表的关联查询。可以自己自定义xml。实体类:加注解,类上:@Table 如果类名和数据库的名字一样的话可以不加这个注解。属性的话:@Column  如果实体类的属性名和数据库的属性名一致则可以不写这个注解。主键:加@Id注解,还有主键生成策略。加注解@GeneratedValue(strategy=GenerationType.IDENTITY)主键自增
 
 
 
 
 
 
 
查询
 
 

你可能感兴趣的:(Lucene和solr基础使用介绍)