lucene第一天(索引index)

Lucene 索引(index),document,field

 

document ----- 一行记录

field  ----------- 一个字段

index----------- 一张表

 

package com.lucene;

import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;

public class Test {

 /**
  * @param args
  * @throws IOException 
  */
 public static void main(String[] args) throws IOException {
  /**
   * 相当于表结构的 一条记录
   * 一个document可以和一个物理文件对应起来 
   * 一个document也可以从不同物理文件提取数据源
   * document甚至不使用物理文件来构建一个document 一段字符串,链接,都可以作为数据源
   */
  
  Document bookdoc=new Document();
  /**
   * Field 数据源, 相当于一条表结构的一个字段数据
   * 有3个重要属性: 
   * 是否存储:是否把内容存放在索引中,如果查询结果不需要显示,就不需要存储
   * 是否索引:是否需要搜索的意思,一般来说 要分词 就必须索引,要索引就不一定要分词
   * 是否分词:是否需要 按照 某个设定的分词器来进行分词搜索。
   * Field 有2个内部类  
   * 1 Store : 表示Field 的存储属性(静态属性)
   *  1.1 COMORESS 压缩存储  
   *  1.2 YES  存储
   *  1.3 NO  不存储
   * 2 Index : 表示Field 的索引属性(静态属性)
   *  2.1 NO 不索引: 
   *  2.2 TOKENZED 被分词后索引
   *  2.3 UN_TOKENZED 不分词索引
   *  2.4 NO_NORMS 不使用Analyzer来索引Field
   */
  
  //存储且分词索引
  Field bookname=new Field("bookname","Java编程思想",Field.Store.YES,Field.Index.TOKENIZED);
  //存储不分词索引
  Field author=new Field("author","wwwlike",Field.Store.YES,Field.Index.UN_TOKENIZED);
  
  //不存储,分词索引
  Field bookabstract=new Field("bookabstract","java是一门编程语言,已经有10多年的发展历史了",Field.Store.NO,Field.Index.TOKENIZED);
  
  
  //把所有的field加入到Document中
  bookdoc.add(bookname);
  bookdoc.add(bookabstract);
  bookdoc.add(author);
  
  /**
   * IndexWriter 主要作用是对缩影进行创建,添加Document,合并何种索引段,以及控制索引相关的方方面面。它
   * 是Lucene的索引的主要操作者。3个构造函数:
   *  public IndexWriter(String path,Analyzer a,boolean create)
   *  public IndexWriter(File path,Analyzer a,boolean create)
   *  public IndexWriter(Directory d,Analyzer a,boolean create)
   *  其中第3个参数是说:是否在第一个参数指定的路径下重新建立索引
   */
  
  try
  {
   //注意文件夹路径的标识方式
  IndexWriter writer=new IndexWriter("d:\\aaa", new StandardAnalyzer(), true);
  //向索引添加文档
  writer.addDocument(bookdoc);
  
    //优化   
     writer.optimize();   
  //一定要close 关闭索引器 关闭各种流才能最终完成索引的建立
  writer.close();
  }catch (Exception e) {
   e.printStackTrace();
  }
  
  //writer.setMaxFieldLength(int maxFieldLength) 设置最大存放field的数量 默认10000
  }

} 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值