Lucene学习篇之写入文档内容

一:Lucene简介

Lucene是Apache提供的一个开源的全文检索引擎工具包, 其本质就是一个工具包, 而非一个完整的搜索引擎

官方网址: http://lucene.apache.org/

二:倒排索引(反向索引)

以字或者词,甚至是一句话一段话作为一个关键字进行索引, 每一个关键字都会对应着一个记录项, 记录项中记录了这个关键字出现在那些文档中, 已经在此文档的什么位置上。

三:构建

 

1)Lucene的相关jar

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-core</artifactId>

<version>4.10.2</version>

</dependency>

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-queries</artifactId>

<version>4.10.2</version>

</dependency>

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-test-framework</artifactId>

<version>4.10.2</version>

</dependency>

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-analyzers-common</artifactId>

<version>4.10.2</version>

</dependency>

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-queryparser</artifactId>

<version>4.10.2</version>

</dependency>

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-highlighter</artifactId>

<version>4.10.2</version>

</dependency>

<!-- 引入IK分词器 -->

<dependency>

<groupId>com.janeluo</groupId>

<artifactId>ikanalyzer</artifactId>

<version>2012_u6</version>

</dependency>

 

2)引入IK分词器扩展》在项目resource目录下加入

IKAnalyzer.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<properties>

<comment>IK Analyzer 扩展配置</comment>

<!--用户可以在这里配置自己的扩展字典 -->

<entry key="ext_dict">ext.dic;</entry>

 

<!--用户可以在这里配置自己的扩展停止词字典-->

<entry key="ext_stopwords">stopword.dic;</entry>

</properties>

ext.dic:

stopword.dic

3)写入文档

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.wltea.analyzer.lucene.IKAnalyzer;

import java.io.File;
import java.io.IOException;

public class LunceneWrite {

    public static void main(String[] args) throws IOException {

        //1.创建索引写入器
        //1.1创建索引库
        FSDirectory directory = FSDirectory.open(new File("E://test"));
        //1.2创建写入器配置对象:参数1  版本号;参数2  分词器
//        IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LATEST, new StandardAnalyzer());
        //使用第三方IK分词器
        IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LATEST, new IKAnalyzer());
        /**
         * APPEND: 表示追加, 如果索引库存在, 就会向索引库中追加数据, 如果索引库不存在, 直接报错
         *
         * CREATE: 表示创建, 不管索引库有没有, 每一次都是重新创建一个新的索引库
         *
         * CREATE_OR_APPEND: 如果索引库有, 就会追加, 如果没有 就会创建索引库
         默认值也是 CREATE_OR_APPEND
         */
        indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);
        IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig);

        //2.写入文档
        //2.1创建文档对象
        Document document = new Document();
        //2.2添加文档属性
        StringField stringField = new StringField("title", "测试string", Field.Store.YES);
        stringField.setBoost(10);//设置加权因子,让搜索结果排名更靠前
        document.add(stringField);
        document.add(new IntField("id",1,Field.Store.YES));
        document.add(new TextField("content","文本内容比较好吃蓝瘦的大墓碑",Field.Store.YES));
        indexWriter.addDocument(document);

        //3.提交数据
        indexWriter.commit();
        //4.释放资源
        indexWriter.close();
        directory.close();
    }
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值