lucene使用

lucene使用

一、lucene简介

lucene是一个全文检索工具包,用于对大量数据,进行基于关键字查询。通常经过分词、建立索引、基于索引查询的过程。

二、lucene知识点

2.1 Directory

Directory,索引库,如内存索引(RAMDirectory)、硬盘上索引(FSDirectory)。还包括索引库控制IndexWriterConfig,包括三种方式:

  • IndexWriterConfig.OpenMode.CREATE,创建或覆盖已经存在的索引;
  • IndexWriterConfig.OpenMode.APPEND,追加已经存在的索引;
  • IndexWriterConfig.OpenMode.CREATE_OR_APPEND,创建或追加已经存在的索引;
2.2 Document

Document,文档的建立,在lucene中,索引的建立和索引的查询都是基于文档的,需要注意的是文档中Field属性,主要包括以下几项:

  • tokenized,即Analyzer把输入的字符串流解析为单词序列,也就是token流,或者说tokenized;
  • indexed,即加入到索引中;
  • Field.Store ,是否将原始串存储。
2.3 Field

Field,文档域,下面相关模式:

  • StringField,索引(indexed),不切词(no tokenized),也就是整个串就是一个token;
  • TextField ,索引(indexed),切词(tokenized);
  • StoredField ,不索引(no indexed),不切词(no tokenized),仅进行存储,便于在结果中查看;
  • IntPoint ,索引,可用于范围查询;
  • LongPoint,索引,可用于范围查询;
  • FloatPoint,索引,可用于范围查询;
  • DoublePoint,索引,可用于范围查询;
  • SortedDocValuesField,索引,可用于排序查询;
  • SortedSetDocValuesField,索引,可用于集合排序查询;
  • NumericDocValuesField,指定文档分数。
2.4 Term

Term,切词,也就是把需要建立索引的句子切分,分解成一个一个的单词,

通常使用Analyzer进行切分,analyzer切分有多种具体的实现方式,下面列出部分:

  • StandardAnalyzer,基于字的切分;
  • CJKAnalyzer ,二元覆盖,即基于两个字的切分,这时会出现其中一个字重叠的情况;
  • HanLPAnalyzer , 汉语言的一种分词方式,一会我们将使用这个做实例介绍。
2.5 IndexWriter

IndexWriter,索引建立,将之前建立的索引加入索引库中 ,需要注意的是,可以使用term对文档进行唯一定位。

索引库的操作有:

  • addDocument ,添加索引;
  • updateDocuments,修改索引;
  • deleteDocuments,删除索引;
2.6 IndexSearcher

IndexSearcher, 索引查询,索引的查询方法有多种方式,即Query下面列出部分:

  • QueryParser,查询分词列;
  • RangeQuery,区间查询;
  • PrefixQuery,前缀查询;
  • TermQuery,基本词查询,查询不切分的字段;
  • MultiTermQuery,多词查询;
  • WildcardQuery,通配符查询,注意此查询很慢,且开头不能使用*;
  • BooleanQuery,布尔查询;
  • FieldScoreQuery,函数查询。
  • FuzzyQuery, 模糊查询,也就是根据相似度查询,

三、lucene实例

3.1 添加maven依赖
<properties>
    <lucene.version>6.5.0</lucene.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>${lucene.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queryparser</artifactId>
        <version>${lucene.version}</version>
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值