lucene--建立索引

 索引的建立,Lucene 提供了五个基础类,分别是 Document, Field, IndexWriter, Analyzer, Directory。以下是他们的用途:

  Document

  Document 字面意思是文档,这里的文档可以是一个 HTML,一封电子邮件,文本文件,doc文档.......。一个 Document 对象由多个 Field 组成的。可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。

  Field

  Field 对象是用来描述一个文档的某个属性的,比如一封电子邮件的标题和内容可以用两个 Field 对象分别描述。

  Analyzer

  在一个文档被索引之前,首先需要对文档内容进行分词处理,这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。针对不同的语言和应用需要选择适合的 Analyzer。Analyzer 把分词后的内容交给 IndexWriter 来建立索引。

  IndexWriter

  IndexWriter 是 Lucene 用来创建索引的一个核心的类,他的作用是把一个个的 Document 对象加到索引中来。

  Directory

  这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。FSDirecory在程序结束之后能够保存在磁盘中,RAMDirectory在程序运行结束之后将不存在。

 

代码示例:

 

 

其他相关资料:

  Field定义:
       Field.Store.YES:存储字段值(未分词前的字段值)
       Field.Store.NO:不存储,存储与索引没有关系
       Field.Store.COMPRESS:压缩存储,用于长文本或二进制,但性能受损

       Field.Index.ANALYZED:分词建索引
       Field.Index.ANALYZED_NO_NORMS:分词建索引,但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储空间
       Field.Index.NOT_ANALYZED:不分词且索引
       Field.Index.NOT_ANALYZED_NO_NORMS:不分词建索引,Field的值去一个byte保存

       TermVector表示文档的条目(由一个Document和Field定位)和它们在当前文档中所出现的次数
       Field.TermVector.YES:为每个文档(Document)存储该字段的TermVector
       Field.TermVector.NO:不存储TermVector
       Field.TermVector.WITH_POSITIONS:存储位置
       Field.TermVector.WITH_OFFSETS:存储偏移量
       Field.TermVector.WITH_POSITIONS_OFFSETS:存储位置和偏移量

 

分词器

  1. /**  
  2.  * SimpleAnalyzer  这个分词是一段一段话进行分  
  3.  * StandardAnalyzer 标准分词拿来分中文和ChineseAnalyzer一样的效果  
  4.  ☆PerFieldAnalyzerWrapper  这个很有意思,可以封装很多分词方式,还可以于先设置field用那个分词分!牛  
  5.  * CJKAnalyzer  这个分词方式是正向退一分词(二分法分词),同一个字会和它的左边和右边组合成一个次,每个人出现两次,除了首字和末字  
  6.  * ChineseAnalyzer  这个是专业的中文分词器,一个一个字分  
  7.  * BrazilianAnalyzer 巴西语言分词  
  8.  * CzechAnalyzer 捷克语言分词  
  9.  * DutchAnalyzer 荷兰语言分词  
  10.  * FrenchAnalyzer 法国语言分词  
  11.  * GermanAnalyzer 德国语言分词  
  12.  * GreekAnalyzer 希腊语言分词  
  13.  * RussianAnalyzer 俄罗斯语言分词  
  14.  * ThaiAnalyzer 泰国语言分词  
  15.  * KeywordAnalyzer "Tokenizes" the entire stream as a single token. This is useful for data like zip codes, ids, and some product names.  
  16.  * PatternAnalyzer api讲这个分词方式很快,它是放在内存里面的  
  17.  * SnowballAnalyzer 经典分词用具 主要支持欧洲语言  
  18.  * StopAnalyzer 被忽略的词的分词器  
  19.  * WhitespaceAnalyzer 空格分词  
  20.  * */ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值