01Lucene支持类似操作数据库一样的建库和索引的机制,这里建库成为“写入”,索引成为“读出”。
02写入流程:
Writer包含Analyzer,将所需记录加入库中,填充其字段,添加所需字段的索引,进行存储。
03读出流程:
Reader(同样包含Analyzer)根据关键词,访问库的所有Document, 提取所需的字段,构造生成文档。
04Analyzer
Analyzer提供去冗余、去无效词的机制,实现分词管理,其过滤基于语义。
05数据结构
A、term是一个文本类,包含关键词和关键词的字段。
B、filed是字段,可这样设置,类似于“关键词所在文章的标题”、“所在文章的正文”、“所在文章的最后修改时间”
C、tocken继承了term的特性,另外也包含term的起止偏移点,以及一个类型字符串。tocken标记了关键词实例的位置,而term仅仅是词语的一个class,同种关键词若位置不同则使用不同的tocken。
D、Segment
Segment是Document的子文件,Document具备分割性和组成特性。
06 Luncene全面支持token安全令牌的规约,对库的安全查询提供支持。
07 一个简单的代码实例
IndexWriter writer = new IndexWriter(“/data/index/”, new StandardAnalyzer(), true);//在路径“/data/index/”上创建writer,包含analyzer
Document doc = new Document();//新建数据库文档
doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.TOKENIZED));
doc.add(new Field("content", "lucene works well", Field.Store.YES, Field.Index.TOKENIZED));//在document里面创建字段title\lucene intro\content\lucene work well
writer.addDocument(doc);//将doc导入writer写入器,doc相当于数据库的一行
writer.optimize();//字符去冗余
writer.close();//关闭writer