- 浏览: 291336 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
wahahachuang5:
web实时推送技术使用越来越广泛,但是自己开发又太麻烦了,我觉 ...
java以post发送方式实现百度Sitemap实时推送代码分享 -
fmpoffice:
发来感谢!准备尝试!https://m.yooshifu.co ...
java以post发送方式实现百度Sitemap实时推送代码分享 -
playboyhaolei:
爱死博主了 学习了 已经成功的推送了 ...
java以post发送方式实现百度Sitemap实时推送代码分享 -
playboyhaolei:
爱死博主了 学习了 已经成功的推送了 ...
java以post发送方式实现百度Sitemap实时推送代码分享 -
真三武侯:
爱死博主了
java以post发送方式实现百度Sitemap实时推送代码分享
第一步:下载lucene的核心包
lucene-core-3.6.1-javadoc.jar (3.5 MB)
lucene-core-3.6.1.jar (1.5 MB)
拷贝到项目的lib 文件夹里
第二步:
在C盘下建立source文件夹 (C:\source)
source文件夹存放待索引的文件,例如,建立两个文件,名称为 test1.txt test2.txt 。
test1.txt文件内容为:欢迎来到绝对秋香的博客。
test2.txt文件内容为:绝对秋香引领你走向潮流。
在C盘下再建立index文件夹,存放索引文件 (C:\index)
第三步,建立索引类 TextFileIndexer ,并运行主函数
package com.newtouchone.lucene; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.Date; 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.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.index.IndexWriterConfig.OpenMode; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version; public class TextFileIndexer { public static void main(String[] args) throws Exception { /* 指明要索引文件夹的位置,这里是C盘的source文件夹下 */ File fileDir = new File("C:\\source"); /* 这里放索引文件的位置 */ File indexDir = new File("C:\\index"); Directory dir = FSDirectory.open(indexDir); Analyzer luceneAnalyzer = new StandardAnalyzer(Version.LUCENE_36); IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36,luceneAnalyzer); iwc.setOpenMode(OpenMode.CREATE); IndexWriter indexWriter = new IndexWriter(dir,iwc); File[] textFiles = fileDir.listFiles(); long startTime = new Date().getTime(); //增加document到索引去 for (int i = 0; i < textFiles.length; i++) { if (textFiles[i].isFile() && textFiles[i].getName().endsWith(".txt")) { System.out.println("File " + textFiles[i].getCanonicalPath() + "正在被索引...."); String temp = FileReaderAll(textFiles[i].getCanonicalPath(), "GBK"); System.out.println(temp); Document document = new Document(); Field FieldPath = new Field("path", textFiles[i].getPath(), Field.Store.YES, Field.Index.NO); Field FieldBody = new Field("body", temp, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); document.add(FieldPath); document.add(FieldBody); indexWriter.addDocument(document); } } indexWriter.close(); //测试一下索引的时间 long endTime = new Date().getTime(); System.out .println("这花费了" + (endTime - startTime) + " 毫秒来把文档增加到索引里面去!" + fileDir.getPath()); } public static String FileReaderAll(String FileName, String charset) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader( new FileInputStream(FileName), charset)); String line = new String(); String temp = new String(); while ((line = reader.readLine()) != null) { temp += line; } reader.close(); return temp; } }
输出结果为:
File C:\source\test1.txt正在被索引.... 欢迎来到绝对秋香的博客。 File C:\source\test2.txt正在被索引.... 绝对秋香引领你走向潮流。 这花费了641 毫秒来把文档增加到索引里面去!C:\source
第四步,建立测试类TestQuery,并运行主函数,输出测试结果
package com.newtouchone.lucene; import java.io.File; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.index.IndexReader; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.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; public class TestQuery { public static void main(String[] args) throws IOException, ParseException { String index = "C:\\index"; //搜索的索引路径 IndexReader reader = IndexReader.open(FSDirectory.open(new File(index))); IndexSearcher searcher = new IndexSearcher(reader); ScoreDoc[] hits = null; String queryString = "绝对秋香"; //搜索的关键词 Query query = null; Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36); try { QueryParser qp = new QueryParser(Version.LUCENE_36,"body", analyzer); query = qp.parse(queryString); } catch (ParseException e) { } if (searcher != null) { TopDocs results = searcher.search(query,10); //返回最多为10条记录 hits = results.scoreDocs; if (hits.length > 0) { System.out.println("找到:" + hits.length + " 个结果!"); } searcher.close(); } } }
测试输出结果为:
找到:2 个结果!
附件homework.rar为项目文件,解压部署则可运行该lucene案例
- lucene-core-3.6.1.jar (1.5 MB)
- 下载次数: 721
- lucene-core-3.6.1-javadoc.jar (3.5 MB)
- 下载次数: 790
- homework.rar (4.5 MB)
- 下载次数: 609
评论
13 楼
2047699523
2015-04-02
apache lucene开源框架demo使用实例教程源代码下载:http://www.zuidaima.com/share/klucene-p1-s1.htm
12 楼
semimi1002
2015-01-06
我直接将项目导入然后运行,报错:Exception in thread "main" org.apache.lucene.index.IndexNotFoundException: no segments* file found in org.apache.lucene.store.MMapDirectory@C:\index lockFactory=org.apache.lucene.store.NativeFSLockFactory@d8a7efd: files: [],能告知一下么
11 楼
adanbaron
2014-10-30
很容易看懂,不像其他那里的,什么都说不清楚
10 楼
王鹏程
2014-10-02
好,非常好
9 楼
love521myself
2014-07-01
同意5楼的说法,楼主给解释一下哈
8 楼
Godlovequan
2014-01-06
感谢,不知道最新的4.6版本怎么弄!
7 楼
lvwenwen
2013-09-01
哥们不错,有可以跑的工程,有些就贴出代码,还要到处找包,麻烦,你这效率高
6 楼
guyanliang
2013-06-01
谢谢分享
5 楼
asdfasdf
2013-05-30
索引好多,总是检索出来一个结果!一个hit不知道为啥?
4 楼
liqita
2012-09-14
过奖,
这是一个lucene简单的测试,以后还要整合到自己的项目去的
这是一个lucene简单的测试,以后还要整合到自己的项目去的
3 楼
mingsheng0310
2012-09-14
看了这么多乱七八糟的文档,就这个文档最直接了,非常感谢
2 楼
liqita
2012-09-13
3Q
1 楼
AlvinCross
2012-09-12
发表评论
-
java以post发送方式实现百度Sitemap实时推送代码分享
2015-06-21 09:48 9243怎么实现百度sitemap实时推送,首先,得拥 ... -
[Java]读取文件方法大全
2012-12-22 16:39 11471、按字节读取文件内容 2、按字符读取文件内容 3、按行读 ... -
Dom4j创建XML文件,对该文件进行修改、格式化以及读取的Demo
2012-11-22 18:04 1772import java.io.File; import ... -
JAVA的文件操作【转】
2012-11-22 14:28 188711.3 I/O 类使用 由于在 IO 操作 ... -
Java文件file操作总结
2012-11-22 14:14 17412010-08-31 15:55 1106人阅读 ... -
java反射详解
2012-11-22 10:29 1081本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的 ... -
Java反射机制的学习
2012-11-22 10:27 1552Java反射机制是 Java 语言被视为准动态语言的关键性 ... -
JAVA:注解(一)
2012-11-20 20:52 1179JAVA:注解(一) (2010-06-24 08:52 ... -
JAVA 反射详细讲解 实例
2012-08-17 16:06 2596一、反射的含义: Java类的一种自审机制, ... -
Eclipse快捷键大全 (转载)
2012-07-13 19:11 1057eclipse快捷键详细介绍 用的最多Ctrl+1 快 ... -
java时间格式大全1!
2012-07-10 17:13 1149java时间格式大全1! 2007年10月22日 星期 ... -
JUnit 4 使用 Java 5 中的注解(annotation),以下是JUnit 4 常用的几个 annotation 介绍
2012-05-28 17:46 2208JUnit 4 中的Before After Ign ... -
java 静态块、非静态块、静态函数、构造函数 执行顺序
2012-04-01 16:25 9780java中经常有一些静态块 ... -
c:foreach 标签的属性 详细解释
2012-03-27 09:00 2678<c:forEach>标签的使用 2007年03 ... -
java中equals 方法和 == 的区别 (详细)
2012-03-26 11:05 3431equal 和 == 的区别 java中eq ... -
java 创建线程的方法 继承Thread类和实现Runnable接口
2011-12-06 10:51 10161要产生一个线程,有两种方法: ◆需要从Java.lang.T ... -
Java HashMap和Hashtable的区别
2011-11-06 16:07 17671、 继承和实现区别 Hashtable是基于陈旧 ... -
java String和StringBuffer的区别
2011-11-06 15:44 1329在java中有3个类来负责字符的操作。 1.Characte ... -
Java int Integer 详解
2011-11-06 15:36 39481.int是基本的数据类 ... -
overload和override的区别 (精简)
2011-11-05 16:04 1120overload和override的区别 overri ...
相关推荐
Lucene 3.6.1: 中文分词、创建索引库、排序、多字段分页查询以及高亮显示源 希望对大家有帮助, 我自己建立的mysql数据库 使用了IKAnalyzer分词器源代码,大家可以自己设置停词,也可以自己改写算法
首先,Lucene的核心包(core)是整个框架的基础,它包含了许多关键组件,如索引构建、查询解析、文档检索等。在这个版本中,Lucene的核心功能有了显著的增强,包括: 1. **索引优化**:Lucene 3.6.1在索引过程中...
lucene3.6.1 所需jar整合包里面包括 lucene-highlighter-3.6.1.jar lucene-core-3.6.0.jar lucene-analyzers-3.6.1.jar IKAnalyzer2012_u6.jar
总的来说,Lucene 3.6.1是一个强大的工具,尽管现在版本已经更新到更高级别,但这个早期版本的案例仍然对理解Lucene的工作原理有很大帮助。对于初学者来说,从这个案例入手,逐步深入学习Lucene的高级特性和优化策略...
Lucene 3.6.1 API chm格式带全文索引方便携带和查询。 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开无法显示,这一般不是chm文件的问题,这里统一说明一下解决办法: 如果文件打开看不到右边...
尽管本压缩包只包含Lucene 3.6.1的API文档,但在学习这些API时,可以结合Solr或Elasticsearch的实践案例,以加深理解。 总的来说,Lucene 3.6.1 API是一个强大且灵活的搜索工具,涵盖了文本分析、索引构建、查询...
《深入剖析Lucene 3.6.1:搜索引擎构建的核心技术》 Apache Lucene是一个开源全文检索库,被广泛应用于各种信息检索系统中。这里我们聚焦于Lucene 3.6.1版本,一个在2011年发布的稳定版本,它在当时的搜索引擎领域...
《Lucene 3.6.1 学习指南:深入解析源码与工具应用》 Lucene 是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发中。本学习资料主要聚焦于 Lucene 3.6.1 版本,这个版本在当时具有稳定性和功能性的良好...
《深入剖析Lucene 3.6.1源码:全文检索引擎的核心技术解析》 Lucene,这个强大的全文检索引擎工具,一直以来都是开发者们研究和应用的重要对象。它以其高效、灵活的特点,广泛应用于信息检索、搜索引擎等领域。本文...
《Apache Lucene 3.6.1 源代码解析》 Apache Lucene 是一个开源全文搜索引擎库,它为开发者提供了强大的文本搜索功能。在这个"lucene-3.6.1-src"压缩包中,包含了Lucene 3.6.1版本的源代码,这个版本在当时是一个...
**正文** Lucene.Net是一个基于Apache Lucene的开源全文搜索引擎库,它被移植到...教程可能涵盖从安装步骤、基本概念介绍,到实战案例的详细讲解,帮助初学者快速入门并熟练运用Lucene.Net进行全文搜索引擎的开发。
实现中文分词的lucene-analyzers-3.6.1.jar的jar 包
实现中文分词的jar包:lucene-highlighter-3.6.1.jar
lucene-core-3.6.1.jar
《深入剖析Lucene全文检索案例源码》 在信息技术领域,全文检索技术是搜索引擎的核心,而Lucene作为Java平台上的一个开源全文检索库,被广泛应用于各种搜索应用中。本篇将围绕“lucene全文检索案例源码”展开,深入...
**Lucene 3.6 入门案例** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了完整的搜索功能,包括索引、查询、评分等,广泛应用于各种项目和产品中。在这个入门案例中,我们将深入理解如何...
本文将深入探讨Lucene 3.6.1版本,结合“庖丁解牛”分词器以及其在数据库表索引、文件索引及分页搜索的应用,为初学者提供一套完整的入门教程。 一、Lucene 3.6.1 概述 Lucene 3.6.1是Apache软件基金会的开源项目...
lucene.net 完全入门教程,包括 lucene.net 介绍, lucene.net工作模式, lucene.net分词方法和中文分词方法, lucene.net索引的建立详解, lucene.net搜索详解, lucene.net的下载方法, lucene.net搜索结果实现...