数据分为两种:结构化数据和非结构化数据;

                    结构化数据:有规律的,固定格式,有限长度的,数据库,原文件等。

                    非结构化数据:没有固定格式,长度的,磁盘上的文件,这种数据不是很好查,可以使用全文检索;

全文检索: 将非结构化的数据中的一部分信息提取出来,重新组织,使其变得有一定结构,称为索引。先创建索引在对索引进行搜索的过程,叫全文检索。

全文检索采用的是倒排索引(通过词语找查找文档,再找文档名)的方式去查;

全文检索的手段:Lucene 是apache旗下的开放源代码的全文检索的工具包。

             Lucene使用流程:

                      1.创建索引

                               原始文档->获取文档->创建文档对象->分析文档->创建索引;

                       2.查询索引

                               创建索引接口->创建查询索引的对象->执行查询->渲染结果; 

 1、创建索引
       场景:给磁盘的文件创建索引
       步骤:
         1、指定索引库位置   Directory
2、创建写入索引的对象   IndexWriter
3、获取源文档IO流
4、把文档写入索引库  indexWriter.addDocument(doc);
5、关闭资源IndexWriter        

添加全文索引 全文检索如何创建索引_添加全文索引

           

添加全文索引 全文检索如何创建索引_Lucene _02

  2、查询索引步骤
     1、指定索引库的位置 Directory
     2、创建读取索引对象 IndexWriter
     3、创建查询索引对象 IndexSearcher
     4、执行查询方法  search方法
     5、获取查询结果 TopDocs

     6、关闭资源IndexWriter

添加全文索引 全文检索如何创建索引_Lucene _03

    

分词器  Analyzer 每个分词器tokenStream方法

Analyzer analyzer = new StandardAnalyzer(); //英文按照空格分词,中文一个字一个字
 Analyzer analyzer = new CJKAnalyzer();  //中文两个字两个字
 需要导入lucene-analyzers-smartcn-4.10.3.jar
 Analyzer analyzer = new SmartChineseAnalyzer(); //中文还可以,但是英文容易出现缺字母



第三方分词器IK-Analyzer(推荐使用的,有两个配置文件)
需要导入jar IKAnalyzer2012FF_u1.jar

Analyzer analyzer = new IKAnalyzer();

分词器的使用时机;


1.创建索引库


2.查询时也会用到分词器

document就是一个网页,一个文档,或者一个表中的一条数据。
fileld  就是属性 相对一个表中的数据,一个域对于的就是一个列
分词器 IK-analyzer 中英文处理得当