lucene简单实例

lucene实例lucene实例 lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例 立即下载
import java.io.File;

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.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Filter;
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.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;
import org.nstcrm.person.model.Person;

/**
 * @author Sam 时间:2011-9-9 下午2:29:22
 */
public class LuceneTool {
	
	
    //使用分词器  
    public static Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_33);
	
	public static void create(Person person) throws Exception {
		// 1,启动时读取
		//Directory ramDir = new RAMDirectory();
		//存放索引的文件夹  
	    Directory dir = FSDirectory.open(new File("d:\\index")); 
        //使用索引文件夹,分词器创建IndexWriter  
        IndexWriter indexWriter = new IndexWriter(dir, analyzer, MaxFieldLength.LIMITED); 
        Document doc = new Document();
        doc.add(new Field("chName",person.getChName(),Store.YES,Index.ANALYZED));
        doc.add(new Field("enName",person.getEnName(),Store.YES,Index.ANALYZED));
        doc.add(new Field("nickName",person.getNickName(),Store.YES,Index.ANALYZED));
        indexWriter.addDocument(doc);
        indexWriter.commit();
        indexWriter.optimize();
        indexWriter.close();
	}
	
	public static void search(String str) throws Exception {
		// 1,把要搜索的文本解析为 Query
		String[] fields = {"chName", "enName" ,"nickName"};
		QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_33, fields, analyzer);
		Query query = queryParser.Query(str);
		// 2,进行查询
		IndexSearcher indexSearcher = new IndexSearcher(FSDirectory.open(new File("d:\\index")));
		Filter filter = null;
		TopDocs topDocs = indexSearcher.search(query, filter, 10000);
		System.out.println("总共有【" + topDocs.totalHits + "】条匹配结果");
		// 3,打印结果
		for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
			int docSn = scoreDoc.doc; // 文档内部编号
			Document doc = indexSearcher.doc(docSn); // 根据编号取出相应的文档

			// 打印出文档信息
			System.out.println("chName: " + doc.get("chName"));
			System.out.println("enName: " + doc.get("enName"));
			System.out.println("nickName: " + doc.get("nickName"));
		}
	}
}


**************************************************************************************************************************************************************

**************************************************************************************************************************************************************

package cn.sam.query.junit;


import java.io.File;
import java.util.HashMap;
import java.util.Map;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Filter;
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.junit.Test;

import cn.sam.query.utils.DocumentTools;

/**
 * @author Sam 时间:2011-10-4 下午8:49:52
 */
@SuppressWarnings("deprecation")
public class LuceneTest {

	private String rootPath = System.getProperty("user.dir").replace("\\", "/");//项目绝对路径
	private String filePath = rootPath + "/luceneData/data_test.txt";
	private String indexPath = rootPath + "/luceneIndex";
	private Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
	//private HttpServletRequest request = ServletActionContext.getRequest();
	
	@Test
	public void test() {
		//filePath = request.getRequestURL().toString();
	}
	
	/**
	 * 创建索引
	 * @author Sam 时间:2011-10-4 下午9:46:01	
	 * @throws Exception
	 */
	@Test
	public void createIndex() throws Exception {
		//Directory ramDir = new RAMDirectory();
		// 建立索引 IndexWriter 是用来操作(增、删、改)索引库
		IndexWriter iw = new IndexWriter(FSDirectory.open(new File(indexPath)), 
			analyzer, true, MaxFieldLength.LIMITED);
		Document doc = DocumentTools.getDoc(filePath);
		iw.addDocument(doc);
		iw.commit();
		iw.optimize();//优化
		iw.close();
		System.out.println("已创建索引!");
	}
	
	/**
	 * 查询
	 * @author Sam 时间:2011-10-4 下午10:37:38	
	 * @throws Exception
	 */
	@Test
	public void query() throws Exception {
		String keywords = "房间";
		
		Map<String, String> mapDoc = new HashMap<String, String>();
		long start = System.currentTimeMillis();
		// 把要搜索的文本解析为 Query
		String[] fields = { "name", "content" };
		QueryParser qp = new MultiFieldQueryParser(Version.LUCENE_CURRENT, fields, analyzer);
		Query query = qp.parse(keywords);
		
		//进行查询
		IndexSearcher is = new IndexSearcher(FSDirectory.open(new File(indexPath)));
		Filter filter = null;
		TopDocs tds = is.search(query, filter, 10000);
		long end = System.currentTimeMillis();
		System.out.println("找到约 " + tds.totalHits + " 条结果 (用时 " + (double)(end - start)/1000d + " 秒)");
		
		//获取查询结果
		for (ScoreDoc sd : tds.scoreDocs) {
			int sdId = sd.doc;// 文档内部编号
			Document doc = is.doc(sdId);//根据编号取出相应的文档
			mapDoc = DocumentTools.readDoc(doc);
			System.out.println(mapDoc.get("content"));
		}
	}

}

package cn.sam.query.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.NumberTools;

/**
 * @author Sam 时间:2011-10-4 下午9:45:13
 */
@SuppressWarnings("deprecation")
public class DocumentTools {

	/**
	 * 文件:name, content, size, path
	 * @author Sam 时间:2011-10-4 下午10:03:21	
	 * @param path
	 * @return Document
	 */
	public static Document getDoc(String path) {
		File file = new File(path);
		Document doc = new Document();
		doc.add(new Field("name", file.getName(), Store.YES, Index.ANALYZED));
		doc.add(new Field("content", readFile(file), Store.YES, Index.ANALYZED));
		doc.add(new Field("size", NumberTools.longToString(file.length()), Store.YES, Index.NOT_ANALYZED));
		doc.add(new Field("path", file.getAbsolutePath(), Store.YES, Index.NOT_ANALYZED));
		return doc;
	}
	
	/**
	 * 读取文件内容
	 */
	public static String readFile(File file) {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
			StringBuffer sb = new StringBuffer();
			String tem = null; 
			while ((tem = br.readLine()) != null) {
				sb.append(tem).append("\n");
			}
			return sb.toString();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 将document打印输出
	 * @author Sam 时间:2011-10-4 下午10:19:50	
	 * @param doc
	 * @return map
	 */
	public static Map<String, String> readDoc(Document doc) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("name", doc.get("name"));
		map.put("content", doc.get("content"));
		map.put("size", doc.get("size"));
		map.put("path", doc.get("path"));
		
		return map;
	}
}



第一个lucene的简单实例.... luceneTest 博文链接:https://wolftou.iteye.com/blog/148701 立即下载

相关推荐

lucene4.7 开发简单实例

lucene4.7开发实例,包括索引创建、修改、删除、排序、分页、优化、高亮显示、常见几种分词器等。实例加全jar包

Lucene学习入门3

前面对索引库做的增删改查不能在同一个索引库里同时进行运行多个索引,下面对前面的代码进行一下修改,来解决这个问题。 首先、先写个工具类,初始化IndexWriter和关闭IndexWriter package com.lucene.luceneutil; import org.apache.lucene.index.IndexWriter; import org.apache.luc...

xiaoyingruochen的博客 171

lucene实例

lucene实例lucene实例lucene实例lucene实例lucene实例

Lucene学习笔记之创建Index

import javax.management.Query; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.luce...

浴盆儿的BLOG 145

PowerBuilder 9.0安装组件全解析:Adaptive Server Anywhere、PowerDynamo、InfoMaker到底怎么选?

本文从技术架构师视角详细解析PowerBuilder 9.0安装组件选型策略,包括Adaptive Server Anywhere、PowerDynamo和InfoMaker的核心功能与应用场景。通过分析组件间的依赖关系和安装冲突机制,提供针对不同开发需求的最佳安装方案,帮助开发者高效配置PB9.0开发环境。

weixin_28700593的博客 440

unity制作交互视频/互动视频

unity制作交互视频/互动视频 思路 1.先让unity播放视频 2. 视频播放结束后,视频暂停,按钮出现 3.按钮跳转下一个视频 视频播放 先创建UI-Raw Iamge 在Raw Iamge 挂载组件 Video Player 接着挂载视频播放的脚本 using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; publi...

weixin_45588911的博客 8423

lucene中的IndexWriter.setMaxFieldLength()

lucene中的IndexWriter.setMaxFieldLength() 老版本的Lucene中,IndexWriter的maxFieldLength是指一个索引中的最大的Field个数。 这个属性在Lucene2.9.0中是不可见的,对其的修改被放在相应的setMaxFieldLength(Int l)和getMaxFiedLength()中; 当索引中的Field的个数等于...

weixin_30625691的博客 149

OLED的字模提取(保姆级)---基于PCtoLCD2013

做为一个刚刚开始接触编程不久的白菜,这个OLED想做一个信息显示,可是商家给我的例程里就是88,816两种字体的格式,我的屏幕是0.91寸的8*16的字体显示上感觉特别丢丢儿小,我就想整个大的,哎,只怪直接学习习惯不好,总是学一半,绕了好大一圈,才搞好,想写一篇博客,时刻提醒踏实学习,第一次写博客,小白一枚,勿喷。。 OLED屏幕驱动程序功能 我们对Markdown编辑器进行了一些功能拓展与语法支...

qq_44886611的博客 7781

Lucene2.0

Lucene是apache组织的一个用java实现全文搜索引擎的开源项目。 其功能非常的强大,api也很简单。总得来说用Lucene来进行建立 和搜索和操作数据库是差不多的(有点像),Document可以看作是 数据库的一行记录,Field可以看作是数据库的字段。用lucene实 现搜索引擎就像用JDBC实现连接数据库一样简单。 Lucene2.0,它与以前广泛应用和介绍的Lucene 1.4.3

fadrun的专栏 1234

【2026年华为暑期实习/秋招(AI)-8月5日-第一题- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

摘要: 本文包含20道选择题,涵盖深度学习、数值计算、概率统计、线性代数及机器学习等领域。重点考察了Softmax的数值稳定性实现(减去最大值)、视觉问答任务(图像+问题→答案)、分层强化学习的奖惩计算、欧氏距离与余弦相似度、反向传播梯度计算、SVD降维存储优化、贝叶斯概率推断、插值多项式等。此外,涉及逻辑回归评价指标(不含MSE)、端侧推理内存因素(中间激活)、集中趋势度量(均值)、Householder变换性质、早期停止正则化、梯度矩阵秩与优化、在线学习特性及大模型训练技巧(如学习率预热、梯度裁剪)等知

m0_73659489的博客 190

汽车UDS诊断之诊断会话控制服务(0x10)深度剖析

DiagnosticSessionControl就是诊断会话控制。 请求消息定义 A_Data类型 参数名称 Cvt 字节值 助记符 #1 诊断会话控制请求SID M 0x10 DSC #2 子功能=[诊断会话类型] M 0x00-0xFF LEV_DS_ ...

心骗小白话的博客 7419

lucene简单实例《二》

Lucene 其实很简单的,它最主要就是做两件事:建立索引和进行搜索 来看一些在lucene中使用的术语,这里并不打算作详细的介绍,只是点一下而已----因为这一个世界有一种好东西,叫搜索。 IndexWriter :lucene中最重要的的类之一,它主要是用来将文档加入索引,同时控制索引过程中的一些参数使用。 Analyzer :分析器,主要用于分析搜索引擎遇到的各种文本。常用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分

ssyan的专栏 566

Cesium 实现动态加载气象数据:渲染成动态雨雪/云层效果(源码 + 原理)

本文介绍了在Cesium中实现动态天气效果的技术方案。核心思路是通过时间轴驱动多层数据动态切换,包括:1)时间维度处理,按序列加载不同气象图层;2)空间维度处理,将气象数据切分为瓦片;3)效果层实现,制作风场、降水等动态可视化效果。文章详细讲解了后端数据预处理(生成瓦片和风场JSON)、前端实现(双层雷达瓦片交替渐变、风场粒子系统)的具体方法,并提供了完整的代码示例。此外还探讨了雨雪粒子、云层效果等增强功能,以及工程化建议,为构建科学准确的动态天气可视化系统提供了实用解决方案。

专注AI大模型,软件混淆,授权 621

lucene java 实例_LUCENE简单实例

关键字: lucene说明一下,这一篇文章的用到的lucene,是用2.0版本的,主要在查询的时候2.0版本的lucene与以前的版本有了一些区别.其实这一些代码都是早几个月写的,自己很懒,所以到今天才写到自己的博客上,高深的文章自己写不了,只能记录下一些简单的记录与点滴,其中的代码算是自娱自乐的,希望高手不要把重构之类的砸下来...1、在windows系统下的的C盘,建一个名叫s的文件夹,在...

weixin_29306011的博客 474

高速信号设计中的关键测试项目与测试仪器详解

高速信号设计是一个多维度协同优化的系统工程。时域分析如同外科手术刀般精准定位物理缺陷,频域分析提供传输通道的频谱指纹,信号质量评估量化系统鲁棒性,接收端容限测试验证极端工况下的可靠性,协议一致性确保生态互操作性,而电源完整性则直指诸多信号问题的根源。

u014344410的博客 217

iqoo11如何获取root权限?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 5812

Lucene 简单查询

简单查询

qq_33291307的博客 199

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SpringBoot中Lucene的简单使用

是

weixin_50678918的博客 1508

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Lucene就是这么简单

Lucene就是这么简单

qq_40091033的博客 157

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

lucene搜索简单的实例

最近项目要用到lucene做全文检索,刚开始迷茫的,回去看了一下,自己写了简单的实例,希望对一些初学者能所帮助,高手请绕道。 项目环境: 1.导入jar包 KAnalyzer3.2.0Stable.jar lucene-analyzers-3.0.1.jar lucene-core-3.0.1.jar lucene-highlighter-3.0.1.jar lucene-m

奋斗的小鸟专栏 1091

Lucene简单示例

一个简单的搜索应用程序假设我们的电脑的目录中含有很多文本文档,我们需要查找哪些文档含有某个关键词。为了实现这种功能,我们首先利用 Lucene 对这个目录中的文档建立索引,然后在建立好的索引中搜索我们所要查找的文档。通过这个例子读者会对如何利用 Lucene 构建自己的搜索应用程序有个比较清楚的认识。[b]建立索引[/b]为了对文档进行索引,Lucene 提供了五个基础的类,他们分别是

851

Lucene简单实例

这两天第一次接触lucene...对这东西很感兴趣...于是下载了lucene-2.2.0-src.zip下来研究研究... 按照网上的例子敲了敲代码.... 却一直出错提示"document.add(Field.Text(...)"行"找不到符号" 后来才明白原来网上的例子大都是lucene 1.4.3版本的... 新版本2.0已经抛弃了原来的一些方法... 于是看了看文档写了个简单的...

iteye_16421的博客 165

Lucene入门以及简单实例

其实,lucene是一个很容易上手的搜索引擎框架,传统的搜索引擎,涉及到爬虫,也就是爬取网页,然后对网页进行加工,也就是索引,最后用于搜 索,lucene这个框架可以很方便的帮你做到后面两个步骤,也就是索引和搜索!本文尝试通过一个例子,使大家掌握lucene的使用核心方法,包括分

天行健,君子以自强不息!~ 966
上一篇: application-session-cookie-css
下一篇: Lucene in action前30页
Y叔输得起
博客等级 码龄16年 15粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值