首页 > Java教程

Lucene的简单用法

2018-10-24 23:01:40

Lucene用法10个小结 - zhao1949的专栏 - CSDN博客

.cfanz./index.php?c=articleamp;a=readamp;id=303149 ************************************************************ ...

lucene最新版本3.3的基本功能用法 - 开源中国社区

lucene最新版本是3.3的,用法和2.X的截然不同,很多在网上都搜不到.我简单的写了下3.3的基本功能用法. 包括:建立索引,查询等. 标签: Lucene ...

Lucene用法总结 - CSDN博客

今天看了别人总结的Lucene的用法,感觉不错,与伙伴们分享一下。       1 lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用...

Lucene的使用方法 - CSDN搜索

archive.apache.org/dist/lucene/java/)本文中使用的是:2.9.4,下载后解压,Lucene所需要的基本jar文件如下列表: lucene-core-2.9.4.jar Lucene核心jar ...

Lucene系列(一)快速入门 - 个人文章 - SegmentFault 思否

Lucene系列(二)luke使用及索引文档的基本操作 Lucene系列(三)查询及高亮 Lucene是什么? Lucene在维基百科的定义 Lucene是一套用于全文检索和搜索的开放源代码程序库,...

Lucene用法10个小结--51CTO博客

1 lucene简介nbsp;1.1 什么是lucenenbsp;Lucene是一个全文搜索框架,而不是应用产品。因此它并不像.baidu. 或者google Desktop那么拿来就能用,...

Lucene. 2.0 中的搜索大全的基本用法,and or 日期数字..._博客园

在这里简要介绍一些能被Lucene直接使用的查询语句. 1. TermQuery查询某个特定的词,在文章开始的例子中已有介绍.常用于查询关键字. [Test] public void...

Lucene的一些基本使用方法和概念 (JAVA)-蜕变-51CTO博客

Lucene是apache组织的一个用java实现全文搜索引擎的开源项目。其功能非常的强大,但api其实很简单的,它最主要就是做两件事:建立索引和进行搜索。1. 建...

Lucene4.10使用教程(四):lucene的Search - CSDN博客

import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.Version; /**  * 对于中文来说,Lucene提供的search基本上不能使用,使用中...

Lucene4.10使用教程(一):常用概念 - 编程爱好者 - CSDN博客

Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家...

lucene.的一些基本使用方法和概念 | 学步园

Lucene是apache(阿帕奇)组织的一个用java实现全文搜索引擎的开源项目。其功能非常的强大,但API(Application Programming Interface应用程序编程接口...

求几篇比较全的lucene的用法文章-CSDN论坛

6条回复nbsp;-nbsp;发帖时间:nbsp;2007年6月19日讲述常见的div+css用法,以及几篇asp.中的优秀文章,以供大家学习! 目前几个...一、分词器简单介绍              Lucene的分词技术很多...

Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索..._博客园

4Lucene7; /** * @Description: lucene 搜索基本...短语查询的一种更通用的用法,支持同位置多个词的OR...

Lucene.基本用法-CSDN下载

*版权明: 只允许上传png/jpeg/jpg/gif格式的图片,且小于3M *详细原因: 取  消 提  交 Lucene.基本用法 3积分 立即下载 ...

【Lucene4.8教程之二】域(Field)的用法-布布扣-bubuko.

2、在Lucene4后,定义了大量的Field的实现类型,根据需要,直接使用其中一个,不再使用笼统的Field来直接创建域。 Direct Known Subclasses: BinaryDocVal...

lucene中FSDirectory、RAMDirectory的用法 - Ruthless - 博客园

lucene中FSDirectory、RAMDirectory的用法package .ljq.one; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStre...

lucene第一步---3.QueryParser用法示例 - llying - ITeye博客

()); //允许使用正则表达式方式 queryParser.setAllowLeadingWildcard(true); ...一个最简单的Lucene例子 Lucene6.1学习案例 一步一步跟我学习lucene(...

Lucene API基本用法 - CSDN博客

Lucene总结系列(一)--认识、helloworld以及基本的api操作。 Jack__Frost 2283次阅读 04-18 使用Java API操作Lucene - CSDN博客 2018-5-22...

Lucene入门代码 - 手机站 - 阿里云

Lucene入门代码Lucene是Apache公司的开源全文搜索工具包,一下是基本用法的入门代码: 第一个java文件: package .citi.service; import java.io.Fi...广州塔中秋节有什么活动?中秋节去广州电视塔优惠活动?中国赴泰游再次升温 驻泰使馆讲故事提醒安全中国免税店有哪些 十一扫荡中国免税店 中国免税店在哪里(图)塞内加尔成为我国第151个公民出境旅游目的地“秋之声”草地音乐会活动详情2017国庆节怎么放假?国庆节放几天假?北京出发去芬兰旅游 北京出发去芬兰旅游 北京出发去芬兰旅游 北京出发去芬兰旅游 北京出发去芬兰旅游 北京出发去芬兰旅游 北京出发去佛得角旅游 北京出发去佛得角旅游 北京出发去佛得角旅游 北京出发去佛得角旅游 北京出发去佛得角旅游 北京出发去佛得角旅游 北京出发去浮鹰岛旅游 北京出发去浮鹰岛旅游 北京出发去浮鹰岛旅游 北京出发去浮鹰岛旅游 北京出发去浮鹰岛旅游 北京出发去浮鹰岛旅游 北京出发去冈比亚旅游 北京出发去冈比亚旅游 北京出发去冈比亚旅游 北京出发去冈比亚旅游 北京出发去冈比亚旅游 北京出发去冈比亚旅游

1.创建索引

  

package com.DingYu.Test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.nio.file.Paths;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.document.Field.Store;import org.apache.lucene.document.StoredField;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.junit.Test;/** * 我们的目标是把索引和文档存入索引库中, 所以首先我们需要创建一个索引库 然后创建一个IndexWrite对象把索引,和文档对象写入, * 文档对象中需要自己设置域,索引是通过分词器对域进行分词产生的, 所以我们需要分词器 * * @author 丁宇 * */public class LuceneTest { /**  * 创建索引  * @throws IOException  */ @Test public void createIndex() throws IOException {  // 标准分词器  Analyzer analyzer = new StandardAnalyzer();  // 创建一个索引  Directory directory = FSDirectory.open(Paths.get("D:\\LuceneIndex"));  // 创建一个IndexWriteConfig对象  IndexWriterConfig config = new IndexWriterConfig(analyzer);  // 创建一个IndexWrite对象  IndexWriter write = new IndexWriter(directory, config);  // 获得所有文件下的文件  File[] files = new File("D:\\LuceneTest").listFiles();  for (File file : files) {   // 创建一个文档对象   Document document = new Document();   // 增加一个filepath域,不分析 不索引 但会存储在索引库里 把文件路径放到域中   Field field1 = new StoredField("filepath", file.getPath());   // 增加一个filename域,会分词,会索引,   Field field2 = new org.apache.lucene.document.TextField("filename", file.getName(), Store.YES);   // 增加一个fileContent域,会分词,会索引,只放文件内容的索引   Field field3 = new org.apache.lucene.document.TextField("filecontent", fileContent(file), Store.NO);   // 增加一个filesize域,不分析 不索引 但会存储在索引库里 把文件路径放到域中   Field field4 = new StoredField("filesize", file.length());   document.add(field1);   document.add(field2);   document.add(field3);   document.add(field4);   write.addDocument(document);  }  write.close(); } /**  * 获得文件内容  * @param file  * @return  */ public String fileContent(File file) {  byte[] fileContent = new byte[(int) file.length()];  FileInputStream in = null;  try {   in = new FileInputStream(file);  } catch (FileNotFoundException e2) {   e2.printStackTrace();  }  try {   in.read(fileContent);  } catch (IOException e1) {   e1.printStackTrace();  }  try {   in.close();  } catch (IOException e) {   e.printStackTrace();  }  try {   return new String(fileContent, "UTF-8");  } catch (UnsupportedEncodingException e) {   e.printStackTrace();  }  return null; }}

2.查询索引

package com.DingYu.Test;import java.io.IOException;import java.nio.file.Paths;import org.apache.lucene.document.Document;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.Term;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TermQuery;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.store.IOContext;import org.apache.lucene.store.IndexInput;import org.junit.Test;/** * 查询索引 * * @author 丁宇 * */public class LuceneTest1 { @Test public void selectIndex() throws IOException {  // 指定索引库  Directory directory = FSDirectory.open(Paths.get("D:\\LuceneIndex"));  // 打开索引库  IndexReader reader = DirectoryReader.open(directory);  // 创建查询的对象  IndexSearcher searcher = new IndexSearcher(reader);  // 选择合适的查询方法,这里用最简单的,具体的看下图  Query query = new TermQuery(new Term("filename", "txt"));  // 执行查询  TopDocs docs = searcher.search(query, 2);  // 获得在索引库中存着的文档的id,利用id去寻找文档  ScoreDoc[] scoreDocs = docs.scoreDocs;  for (ScoreDoc scoreDoc : scoreDocs) {   // 获得id   int doc = scoreDoc.doc;   // 获得文档   Document document = searcher.doc(doc);   // 获得这个文档的域   System.out.println(document.get("filename"));   System.out.println(document.get("filecontent"));   System.out.println(document.get("filepath"));   System.out.println(document.get("filesize"));   System.out.println("------------------------");  }  // 关闭索引库  reader.close(); }}

 

 

3.删除索引

 

package com.DingYu.Test;import java.io.IOException;import java.nio.file.Paths;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.index.Term;import org.apache.lucene.search.Query;import org.apache.lucene.search.TermQuery;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.junit.Test;/** * 删除索引 一般增删改都是同一个操作对象 这里使用IndexWriter对象 * * @author 丁宇 * */public class LuceneTest3 { /**  * 获得IndexWrite对象  * @return  * @throws IOException  */ public IndexWriter getIndexWrite() throws IOException {  Analyzer analyzer = new StandardAnalyzer();  Directory directory = FSDirectory.open(Paths.get("D:\\LuceneIndex"));  IndexWriterConfig config = new IndexWriterConfig(analyzer);  return new IndexWriter(directory, config); } /**  * 删除所有的索引  *  * @throws IOException  */ @Test public void deleteAllIndex() throws IOException {  IndexWriter indexWrite = getIndexWrite();  indexWrite.deleteAll();  indexWrite.close(); } /**  * 根据条件删除索引,同时删除文档  * @throws IOException  */ @Test public void deleteSomeIndex() throws IOException {  IndexWriter indexWrite = getIndexWrite();  Query query = new TermQuery(new Term("filename","txt"));  indexWrite.deleteDocuments(query);  indexWrite.close();   }}

 

相关文章