ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Lucene7详细使用说明(一)索引的创建

2021-12-15 13:33:57  阅读:173  来源: 互联网

标签:dataList 创建 add lucene 索引 Lucene7 new


以maven项目为例,首先先引入jar包

   <!--Lucene核心库-->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>7.2.1</version>
        </dependency>
        <!-- Lucene解析库-->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queryparser</artifactId>
            <version>7.2.1</version>
        </dependency>
        <!--Lucene附加的分析库-->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
            <version>7.2.1</version>
        </dependency>
        <!-- ikAnalyzer中文分词器-->
        <dependency>
            <groupId>com.lucene</groupId>
            <artifactId>ikAnalyzer</artifactId>
            <version>6.5.0</version>
        </dependency>
        <!--Lucene高亮显示-->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-highlighter</artifactId>
            <version>7.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-memory</artifactId
            <version>7.2.1</version>
        </dependency>
View Code 

引入包之后就是创建索引,创建索引有两种方式,一种创建内存索引库,另一种是创建文件索引库。两种方法各有各的好处:

1. 内存索引库:好处:读取快。缺点:内存使用率高,不具备持久能力。

2. 文件索引库:好处:将索引保存在本地磁盘上,便于长久保存。缺点:相比较而言读取慢。

内存索引库创建器方法:

Directory index = new RAMDirectory();
// IKAnalyzer6.5是一款很好的分词器,可以根据需要选择不同的分词器
IKAnalyzer analyzer = new IKAnalyzer();
// analyzer为分词器对象,这里不多赘述
IndexWriterConfig config = new IndexWriterConfig(analyzer);
// 索引创建器
IndexWriter writer = new IndexWriter(index, config);

文件索引库创建器方法:

// path为保存文件路径 Path类型
Directory index = FSDirectory.open(path);
IKAnalyzer analyzer = new IKAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(analyzer); 
IndexWriter writer = new IndexWriter(index, config);

创建了索引创建器后就是对数据进行生成索引(后续都默认创建文件夹索引库)先上代码

List<String> dataList = new ArrayList<>();
dataList.add("小米三星华为");
dataList.add("苹果小米三星");
dataList.add("字节腾讯阿里");
dataList.add("字节苹果华为");
for (String s:dataList){
      Document document = new Document();
      document.add(new TextField("co",s, Field.Store.YES));
      writer.addDocument(document);
}
writer.close();

Document类:类似于数据库里的一行,是索引的基本单位,一条数据可以有多个docement。

TextField:相当于数据库的字段。第一个属性name相当于键,第二个属性value相当于值,第三个属性Store store 有三种:Store.YES 保存 可以查询 可以打印内容;Store.NO 不保存 可以查询 不可打印内容 由于不保存内容所以节省空间 ;Store.COMPRESS 压缩保存 可以查询 可以打印内容 可以节省生成索引文件的空间。

到此,索引就创建成功了可以在文件夹内看到创建好的索引内容。

 

 源代码:

public class LuceneDemo {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\lucene");
        Directory index = FSDirectory.open(file.toPath());
        IKAnalyzer analyzer = new IKAnalyzer();
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        IndexWriter writer = new IndexWriter(index, config);
        List<String> dataList = new ArrayList<>();
        dataList.add("小米三星华为");
        dataList.add("苹果小米三星");
        dataList.add("字节腾讯阿里");
        dataList.add("字节苹果华为");
        for (String s:dataList){
            Document document = new Document();
            document.add(new TextField("co",s, Field.Store.YES));
            writer.addDocument(document);
        }
        writer.close();
    }
}
View Code

标签:dataList,创建,add,lucene,索引,Lucene7,new
来源: https://www.cnblogs.com/c-Xuu/p/15691716.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有