- 浏览: 287441 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 9131怎么实现百度sitemap实时推送,首先,得拥 ... -
[Java]读取文件方法大全
2012-12-22 16:39 11021、按字节读取文件内容 2、按字符读取文件内容 3、按行读 ... -
Dom4j创建XML文件,对该文件进行修改、格式化以及读取的Demo
2012-11-22 18:04 1702import java.io.File; import ... -
JAVA的文件操作【转】
2012-11-22 14:28 180911.3 I/O 类使用 由于在 IO 操作 ... -
Java文件file操作总结
2012-11-22 14:14 17082010-08-31 15:55 1106人阅读 ... -
java反射详解
2012-11-22 10:29 1003本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的 ... -
Java反射机制的学习
2012-11-22 10:27 1494Java反射机制是 Java 语言被视为准动态语言的关键性 ... -
JAVA:注解(一)
2012-11-20 20:52 1071JAVA:注解(一) (2010-06-24 08:52 ... -
JAVA 反射详细讲解 实例
2012-08-17 16:06 2552一、反射的含义: Java类的一种自审机制, ... -
Eclipse快捷键大全 (转载)
2012-07-13 19:11 1014eclipse快捷键详细介绍 用的最多Ctrl+1 快 ... -
java时间格式大全1!
2012-07-10 17:13 1109java时间格式大全1! 2007年10月22日 星期 ... -
JUnit 4 使用 Java 5 中的注解(annotation),以下是JUnit 4 常用的几个 annotation 介绍
2012-05-28 17:46 2155JUnit 4 中的Before After Ign ... -
java 静态块、非静态块、静态函数、构造函数 执行顺序
2012-04-01 16:25 9742java中经常有一些静态块 ... -
c:foreach 标签的属性 详细解释
2012-03-27 09:00 2587<c:forEach>标签的使用 2007年03 ... -
java中equals 方法和 == 的区别 (详细)
2012-03-26 11:05 3394equal 和 == 的区别 java中eq ... -
java 创建线程的方法 继承Thread类和实现Runnable接口
2011-12-06 10:51 10087要产生一个线程,有两种方法: ◆需要从Java.lang.T ... -
Java HashMap和Hashtable的区别
2011-11-06 16:07 17221、 继承和实现区别 Hashtable是基于陈旧 ... -
java String和StringBuffer的区别
2011-11-06 15:44 1291在java中有3个类来负责字符的操作。 1.Characte ... -
Java int Integer 详解
2011-11-06 15:36 39121.int是基本的数据类 ... -
overload和override的区别 (精简)
2011-11-05 16:04 1066overload和override的区别 overri ...
相关推荐
Lucene 3.6.1: 中文分词、创建索引库、排序、多字段分页查询以及高亮显示源 希望对大家有帮助, 我自己建立的mysql数据库 使用了IKAnalyzer分词器源代码,大家可以自己设置停词,也可以自己改写算法
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 API chm格式带全文索引方便携带和查询。 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开无法显示,这一般不是chm文件的问题,这里统一说明一下解决办法: 如果文件打开看不到右边...
lucene3.6.1文件关键字搜索代码(附加核心包),就是一个入门级的JAVA全局文件夹搜索案例、对于初学lucene很有帮助。
lucene core contrib包。core是lucene的核心包、contrib中有关键词高亮、各种语言分析器等辅助工具包
Lucene全文检索案例Lucene全文检索案例Lucene全文检索案例Lucene全文检索案例
这个压缩包包含lucene_3.6.1_API,后缀格式为chm. .;...
lucene-3.6.1-src
Lucene.Net是Lucene在dot net平台上的移植版本。它的功能与Lucene一样,都是用来提供一组API,让我们能快速开发自己的搜索引擎,当然,是全文搜索。
实现中文分词的lucene-analyzers-3.6.1.jar的jar 包
lucene全文检索案例源码 lucene全文检索案例源码
NULL 博文链接:https://lijunlong.iteye.com/blog/1667037
lucene-3.6.1源代码及jar包,需要的可以直接下载~~~~~~~
实现中文分词的jar包:lucene-highlighter-3.6.1.jar
lucene是强大全文检索引擎工具,该源码有助于开发人员深入的了解lucene实现机制。
lucene-core-3.6.1.jar
lucene.net 完全入门教程,包括 lucene.net 介绍, lucene.net工作模式, lucene.net分词方法和中文分词方法, lucene.net索引的建立详解, lucene.net搜索详解, lucene.net的下载方法, lucene.net搜索结果实现...
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放...Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
说明: 例子是根据lucene3.6写的,也可以说是直接copy别人的。 包括参考文章的代码,以及修改部分之后的代码