--于2020.08.28从jar包更新为了maven依赖

什么是Lucene? 
Lucene是apache下的一个开放源代码的全文检索引擎工具包,通过它可以实现全文检索。
什么是全文检索(Full-text Search)?
将非结构化数据(如文本)中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。
        而先建立好索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)

全文索引和搜索流程图:

maven依赖

<dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-core</artifactId><version>4.10.0</version></dependency><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-queryparser</artifactId><version>4.10.0</version></dependency><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-memory</artifactId><version>4.10.0</version></dependency><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-highlighter</artifactId><version>4.10.0</version></dependency><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-analyzers-common</artifactId><version>4.10.0</version></dependency>
<!-- 中文分词器       --><dependency><groupId>com.janeluo</groupId><artifactId>ikanalyzer</artifactId><version>2012_u6</version></dependency>

接下来是lucene的增删改查

package com.y20.core;import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
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 IndexTest {public static String PATH="D:\\luceneindex";public static void main(String[] args) {//1.新增后查询//insert();//select("晚宴");//2.查一个不是索引的词条//select("2017");//3.修改索引后查询//update("晚宴");//select("扶贫");//4.删除索引后查询delete("扶贫");select("扶贫");}public static void insert(){try {//1.设置索引存放目录FSDirectory iDirectory=FSDirectory.open(new File(PATH));//2.设置分词器IKAnalyzer中文分词工具包Analyzer analyzer=new IKAnalyzer();//根据lucene版本不同,IndexWriterConfig方法出现了变化,之前的写法为:// IndexWriterConfig config=new IndexWriterConfig(analyzer);  不需要加版本号IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_4_10_0,analyzer);//3.创建索引写入器(索引存放处,分词器)IndexWriter indexWriter=new IndexWriter(iDirectory, config);//4.创建索引Document document=new Document();//5.创建一个属性Field title = new TextField("title", "2017最具期待数字平台竞标晚宴”圆满落幕-搜狐新闻", Field.Store.YES);Field keyWord = new TextField("key", "竞标 晚宴 ",Field.Store.YES);Field content = new TextField("content", "10月18日,由金投赏主办、华扬联众独家承办的“2017最具期待数字平台竞标晚宴", Field.Store.YES);Field url=new TextField("url","http://news.sohu.com/20161028/n471629875.shtml", Field.Store.YES);//6.将属性添加到索引中document.add(title);document.add(keyWord);document.add(content);document.add(url);//7.将索引写入到写入器中indexWriter.addDocument(document);//8.关闭写入流indexWriter.close();} catch (IOException e) {e.printStackTrace();}}public static void select(String indexName){//1.设置索引存放的目录try {FSDirectory iDirectory=FSDirectory.open(new File(PATH));//2.读取所设置目录中的索引DirectoryReader reader=DirectoryReader.open(iDirectory);//3.创建索引查询器IndexSearcher searcher=new IndexSearcher(reader);//4.构建一个语法解析器(参数(创建索引所用的关键词,分词器))QueryParser parser=new QueryParser("key",new IKAnalyzer());//5.解析目标字符串,通过解析这个可以得到你所需要的词条信息(匹配“竞标和key”)Query query=parser.parse(indexName);//6.执行查询,得到的数组(第二个参数为前多少条)TopDocs docs=searcher.search(query, 50);//7.取数据ScoreDoc[] scoreDocs=docs.scoreDocs;for(int i=0;i<scoreDocs.length;i++){int id=scoreDocs[i].doc;Document doc=searcher.doc(id);String context=doc.get("content");System.out.println("搜索到的内容是:"+context);}//8.关连接reader.close();} catch (Exception e) {e.printStackTrace();}}//修改的逻辑是将之前索引删除再创建一个新的public static void update(String indexName){try {//1.设置索引存放目录FSDirectory iDirectory=FSDirectory.open(new File(PATH));//2.设置分词器IKAnalyzer中文分词工具包Analyzer analyzer=new IKAnalyzer();IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_4_10_0,analyzer);//3.创建索引写入器(索引存放处,分词器)IndexWriter indexWriter=new IndexWriter(iDirectory, config);//4.创建索引Document document=new Document();//5.创建一个属性Field title = new TextField("title", "“绿水青山就是金山银山”在浙江的探索和实践-搜狐新闻-已修改", Field.Store.YES);Field keyWord = new TextField("key", "竞标 扶贫", Field.Store.YES);Field content = new TextField("content", "这是浙江德清县筏头乡“裸心谷生态度假村”以低碳理念兴建的", Field.Store.YES);Field url = new TextField("url", "http://news.sohu.com/20170526/n494527253.shtml", Field.Store.YES);//6.将属性添加到索引中document.add(title);document.add(keyWord);document.add(content);document.add(url);//7.创建语法解析器,解析目标字符串QueryParser parser = new QueryParser("key",new IKAnalyzer());Query query = parser.parse(indexName);//8.将索引写入到写入器中,将之前的索引先删除再添加indexWriter.deleteDocuments(query);indexWriter.addDocument(document);//9.关闭写入流indexWriter.close();} catch (Exception e) {e.printStackTrace();}}public static void delete(String indexName){try {//1.设置索引存放目录FSDirectory iDirectory=FSDirectory.open(new File(PATH));//2.设置分词器IKAnalyzer中文分词工具包Analyzer analyzer=new IKAnalyzer();IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_4_10_0,analyzer);//3.创建索引写入器(索引存放处,分词器)IndexWriter indexWriter=new IndexWriter(iDirectory, config);//4.创建语法解析器,解析目标字符串QueryParser parser = new QueryParser("key",new IKAnalyzer());Query query = parser.parse(indexName);//5.删除索引indexWriter.deleteDocuments(query);//6.关闭写入流indexWriter.close();} catch (Exception e) {e.printStackTrace();}}
}

在insert之后,可以在指定文件夹中看到:

Lucene和ikanalyzer(中文分词器)的简单使用增删改查(提供maven依赖)相关推荐

  1. Lucene学习——IKAnalyzer中文分词(二)

    一.环境 1.平台:MyEclipse8.5/JDK1.5 2.框架:Lucene3.6.1/IKAnalyzer2012/htmlparser 二.目标 1.整合前面连篇文章(Lucene学习--I ...

  2. IKAnalyzer 中文分词器

    IK Analyzer 2012 介绍 IK Analyzer 是一个开源的,基亍 java 语言开发的轻量级的中文分词工具包.从 2006 年 12 月推出 1.0 版开始, IKAnalyzer ...

  3. Solr的学习使用之(三)IKAnalyzer中文分词器的配置

    1.为什么要配置? 1.我们知道要使用Solr进行搜索,肯定要对词语进行分词,但是由于Solr的analysis包并没有带支持中文的包或者对中文的分词效果不好,需要自己添加中文分词器:目前呼声较高的是 ...

  4. solr集成IKAnalyzer中文分词器

    如果想要知道如何安装solr,集成IKAnalyzer中文分词器,批量导入数据库数据,java使用参照以下本博主博文: 安装solr https://blog.csdn.net/u013294097/ ...

  5. 发布IKAnalyzer中文分词器V3.1.3GA生日祝福版

    [size=large][b]生日祝福[/b][/size] 谨以此版本献给我的老婆,今天是她的生日,在这里,要祝福她生日快乐,天天无忧无虑. 感谢她一直以来对我从事开源项目的支持和鼓励,想对她说:谢 ...

  6. 【IKAnalyzer】IKAnalyzer中文分词器的使用

    IKAnalyzer中文分词器的使用 IK-Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包,也就是可以将一串中文字符分割成一个个的词组或者字词 安装 修改pom文件 < ...

  7. Solr使用IKAnalyzer中文分词器配置教程

    Solr使用IKAnalyzer中文分词器配置教程 文件准备 开始配置 1.将分词器jar包放到自定义lib目录下 2.将IKAnalyzer.cfg.xml配置文件放到core的conf目录下 3. ...

  8. SpringMVC_实现简单的增删改查

    实现简单的增删改查 1:创建User的javabean package com.doaoao.bean; public class User {private String name;private ...

  9. Struts2 注解开发实现简单的增删改查,超详细教程

    声明:此文是原创,如果需要转载请注明出处:https://blog.csdn.net/hunter_max/article/details/80575542 上一篇博客<Struts2 注解开发 ...

  10. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] arg ...

最新文章

  1. jquery-1.11.3.js与jquery-1.11.3.min.js区别
  2. 「回顾」网易数据基础平台建设
  3. Android 读取xml转json,将XML转换为Android中的JSON对象
  4. 消息中间件-Activemq之Broker-Cluster
  5. Swift 对象内存模型探究(一)
  6. org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: failed to lazily i
  7. yii2 RESTful api的详细使用
  8. 深度学习开发者的AI Party来了!WAVE SUMMIT+2021与你相约双十二
  9. java dictionary遍历_C# Dictionary 的几种遍历方法
  10. c语言如何监控网卡信息,查看网卡信息及状态和网卡日志信息
  11. IIS6.0,Apache低版本,PHP CGI 解析漏洞
  12. Oracle view 小结片段
  13. java swing预览pdf_java – 如何使用iText将Swing组件绘制为PDF文件?
  14. [SecureCRT] 解决 securecrt failed to open the host key database file 的问题
  15. AI学习笔记(十三)CNN之人脸检测
  16. MyEclipse中更改JRE环境
  17. VS2010的详细安装
  18. HiveSQL和普通SQL的区别
  19. 计算机组成原理实验报告 实验五 三人表决电路实验
  20. Relab Sonsig Rev-A 演示 华丽的混响插件

热门文章

  1. Pr调色预设怎么安装?.cube格式luts预设如何导入pr?Premiere导入LUTs预设详细教程
  2. [JsonSchema] JsonSchema对比 (Java 版)
  3. 阵列信号基础:天线阵列模型
  4. 功耗大好还是小好_功率因数大好还是小好?功率因数低有什么危害
  5. 【架构师】零基础到精通——微服务体系
  6. android项目源码解析04:新浪微博客户端源码解析
  7. Python爬虫入门教程【18】: 36氪(36kr)数据抓取 scrapy
  8. 51单片机温度传感器
  9. 抓图软件之HyperSnap-DX Pro
  10. 在WM6应用层代码检测POWER键RESUME动作