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

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

Lucene7详细使用说明(一)索引的创建
   <!--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 压缩保存 可以查询 可以打印内容 可以节省生成索引文件的空间。

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

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

 

 源代码:

Lucene7详细使用说明(一)索引的创建
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
上一篇:爬虫——豆瓣前二百


下一篇:【C#】List使用汇总