- 浏览: 75481 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
hay:
大骗子
zend studio教程 -
jiewuzhe02:
请问开源CMS digitaluscms 安装后不能登录后台 ...
zend frawework 开源代码列子 -
天梯梦:
怎么一个都打不开啊
zend studio教程 -
freedomstyle:
调试的时候,变量中文出现乱码
zend studio for eclipse 中文乱码的问题 -
freedomstyle:
是的,我也碰到这样的问题。
zend studio for eclipse 中文乱码的问题
说明一下,这一篇文章的用到的lucene,是用2.0版本的,主要在查询的时候2.0版本的lucene与以前的版本有了一些区别.
其实这一些代码都是早几个月写的,自己很懒,所以到今天才写到自己的博客上,高深的文章自己写不了,只能记录下一些简单的记录与点滴,其中的代码算是自娱自乐的,希望高手不要把重构之类的砸下来...
1、在windows系统下的的C盘,建一个名叫s的文件夹,在该文件夹里面随便建三个txt文件,随便起名啦,就叫"1.txt","2.txt"和"3.txt"啦
其中1.txt的内容如下:
中华人民共和国 全国人民 2006年
而"2.txt"和"3.txt"的内容也可以随便写几写,这里懒写,就复制一个和1.txt文件的内容一样吧
2、下载lucene包,放在classpath路径中
建立索引:
- package lighter.iteye.com;
- 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;
- /**
- * author lighter date 2006-8-7
- */
- public class TextFileIndexer {
- public static void main(String[] args) throws Exception {
- /* 指明要索引文件夹的位置,这里是C盘的S文件夹下 */
- File fileDir = new File("c:\\s");
- /* 这里放索引文件的位置 */
- File indexDir = new File("c:\\index");
- Analyzer luceneAnalyzer = new StandardAnalyzer();
- IndexWriter indexWriter = new IndexWriter(indexDir, luceneAnalyzer,
- true);
- 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.TOKENIZED,
- Field.TermVector.WITH_POSITIONS_OFFSETS);
- document.add(FieldPath);
- document.add(FieldBody);
- indexWriter.addDocument(document);
- }
- }
- //optimize()方法是对索引进行优化
- indexWriter.optimize();
- 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;
- }
- }
package lighter.iteye.com; 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; /** * author lighter date 2006-8-7 */ public class TextFileIndexer { public static void main(String[] args) throws Exception { /* 指明要索引文件夹的位置,这里是C盘的S文件夹下 */ File fileDir = new File("c:\\s"); /* 这里放索引文件的位置 */ File indexDir = new File("c:\\index"); Analyzer luceneAnalyzer = new StandardAnalyzer(); IndexWriter indexWriter = new IndexWriter(indexDir, luceneAnalyzer, true); 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.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS); document.add(FieldPath); document.add(FieldBody); indexWriter.addDocument(document); } } //optimize()方法是对索引进行优化 indexWriter.optimize(); 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:\s\1.txt正在被索引....
- 中华人民共和国全国人民2006年
- File C:\s\2.txt正在被索引....
- 中华人民共和国全国人民2006年
- File C:\s\3.txt正在被索引....
- 中华人民共和国全国人民2006年
- 这花费了297 毫秒来把文档增加到索引里面去!c:\s
File C:\s\1.txt正在被索引.... 中华人民共和国全国人民2006年 File C:\s\2.txt正在被索引.... 中华人民共和国全国人民2006年 File C:\s\3.txt正在被索引.... 中华人民共和国全国人民2006年 这花费了297 毫秒来把文档增加到索引里面去!c:\s
3、建立了索引之后,查询啦....
- package lighter.iteye.com;
- import java.io.IOException;
- import org.apache.lucene.analysis.Analyzer;
- import org.apache.lucene.analysis.standard.StandardAnalyzer;
- import org.apache.lucene.queryParser.ParseException;
- import org.apache.lucene.queryParser.QueryParser;
- import org.apache.lucene.search.Hits;
- import org.apache.lucene.search.IndexSearcher;
- import org.apache.lucene.search.Query;
- public class TestQuery {
- public static void main(String[] args) throws IOException, ParseException {
- Hits hits = null;
- String queryString = "中华";
- Query query = null;
- IndexSearcher searcher = new IndexSearcher("c:\\index");
- Analyzer analyzer = new StandardAnalyzer();
- try {
- QueryParser qp = new QueryParser("body", analyzer);
- query = qp.parse(queryString);
- } catch (ParseException e) {
- }
- if (searcher != null) {
- hits = searcher.search(query);
- if (hits.length() > 0) {
- System.out.println("找到:" + hits.length() + " 个结果!");
- }
- }
- }
- }
package lighter.iteye.com; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; public class TestQuery { public static void main(String[] args) throws IOException, ParseException { Hits hits = null; String queryString = "中华"; Query query = null; IndexSearcher searcher = new IndexSearcher("c:\\index"); Analyzer analyzer = new StandardAnalyzer(); try { QueryParser qp = new QueryParser("body", analyzer); query = qp.parse(queryString); } catch (ParseException e) { } if (searcher != null) { hits = searcher.search(query); if (hits.length() > 0) { System.out.println("找到:" + hits.length() + " 个结果!"); } } } }
其运行结果:
引用
找到:3 个结果!
具体的API的用法,这里就不说了,具体的做法参考lucene的官方文档吧...
下一篇文章:
搜索篇:lucene的简单实例<二> http://www.iteye.com/post/190576
发表评论
-
Zend Framework 教程大全(英文版)
2009-02-22 23:05 2533Zend Framework教程大全 07月 3rd, 200 ... -
Zend Framework 1.7.5发布增加了不少功能
2009-02-19 21:43 1405Welcome to Zend Framework 1.7 ... -
走进全文搜索
2009-02-17 14:07 1008走进全文搜索 http://www.phpx.com/hap ... -
Jobeet 第17天:搜索引擎
2009-02-17 10:49 954写给每个朋友来访的朋友! Friday, December ... -
Zend Search Lucene实现全文搜索收藏
2009-02-17 10:24 1872Zend Search Lucene实现全文搜索收藏 新一篇 ... -
DBSight-Zend Framework中lucene的最佳替代方案
2009-02-17 10:22 2356DBSight-Zend Framework中lucene的最 ... -
理解ZEND_DB_PROFILE相关的知识
2009-02-14 00:46 979MYSQL的性能跟踪mysql> help profil ... -
zend framwork quickstart 列子SQLLITE介绍
2009-02-13 01:54 1215SQLLITE 1、SQLite简介SQLite第一个Al ... -
ZF HEADLINK相关的HTML link标签 rel 属性
2009-02-12 21:04 2263rel 属性 -- rel属性,描述了当前页面与href所指定 ... -
php 目录结构学习
2009-02-11 21:59 0d:/docroot/ index.phpapplica ... -
zend framework中的helper们
2009-02-10 15:21 22122008-11-06 00:28 写 ... -
使用zend Framework的lucene进行全文检索——中文分词
2009-02-09 16:05 1966[2007/06/16 21:52 | 分类: PHP高级技 ... -
Zend Framework实例教程2
2009-02-09 10:00 2320最后,admin.php模板可以用来批准新闻条目: &l ... -
Zend Framework实例教程
2009-02-09 09:17 2719作者:张佳(译) 来源:PHPEye开源社区 20 ... -
Zend Framework 留言本实战
2009-02-08 20:27 5817一、环境搭建和ZF安装 *[注] ... -
xampp下跑zendframe框架apache报pdo错
2009-02-08 16:47 2077今天在xampp下跑zendframe框架 链接数据库,遇到这 ... -
zend frawework 开源代码列子
2009-02-08 13:01 16381.zend frawework QUICK START ... -
国外主流PHP框架比较
2009-02-06 10:13 2304国外主流PHP框架比较 作者:heiyelure ...
相关推荐
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>3.5.0</version> </dependency> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-...
《Lucene简单代码实例解析》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个简单的API,使得开发者可以方便地在自己的应用程序中集成全文检索功能。...
以上就是 Lucene 的一个简单应用实例,它展示了如何使用 Lucene 创建索引和执行查询。实际项目中,你可能需要处理更复杂的文本分析、多字段查询、排序、分页等功能。了解 Lucene 提供的各种组件和类,如 Analyzer、...
从给定的文件信息中,我们可以提取出关于Apache Lucene的基本使用和实例的详细知识点,以下是对这些知识点的深入解析: ### Lucene简介 Apache Lucene是一个高性能、全功能的文本搜索引擎库,由Java编写,提供了对...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>8.5.1</version> </dependency> <!-- 其他相关模块如-analyzers-common, -queryparser等根据需求添加 --> ``` 三、Lucene...
以下是一个简单的Java代码示例,展示了如何创建和使用Lucene索引器: ```java import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache....
**Lucene 搜索实例** Apache Lucene 是一个高性能、全文本搜索引擎库,它为开发者提供了在各种应用程序中实现全文检索的工具集。Lucene 并不是一个完整的应用,而是一个 Java 类库,可以被其他 Java 应用程序所使用...
<artifactId>jai-imageio-core</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>com.github.jai-imageio</groupId> <artifactId>jai-imageio-jpeg2000</artifactId> <version>...
以下是一个简单的示例代码,演示了如何使用Lucene搜索包含关键词"lucene"的文档: ```java public class TxtFileSearcher { public static void main(String[] args) throws Exception{ String queryStr = ...
本篇文章将详细探讨Lucene的实例应用,以及如何通过实例来理解和掌握这一技术。 一、Lucene的基本概念 1. 文档(Document):在Lucene中,文档是信息的基本单位,可以理解为数据库中的一条记录,包含多个字段...
通过实例,我们可以创建一个简单的索引器,将文本文件或数据库内容导入Lucene索引,然后编写一个搜索引擎来查询这些内容。这通常涉及以下步骤: - 创建索引:定义Document结构,使用Analyzer处理Field,通过...
Compass是一个基于Apache Lucene的全文搜索引擎库,它提供了一种简单的方式来连接到应用程序的数据源,并将其索引到Lucene中。Compass的主要优势在于它能够透明地集成到现有应用中,使得开发者无需对原有代码进行大...
《Lucene+HighLighter高亮显示实例解析》 在信息技术领域,搜索引擎的构建与优化是至关重要的一环,其中,如何有效地对搜索结果进行高亮...无论是简单的个人项目还是大型企业级应用,Lucene都是一个值得信赖的选择。
标题 "第一个lucene的简单实例" 提到的是关于Apache Lucene的初步应用,这是一个全文搜索引擎库,常用于Java开发中。Lucene提供了高效的文本搜索功能,使得开发者能够快速地在大量数据中查找相关信息。 描述中的 ...
总结,Lucene 4.8 是一个强大且灵活的搜索库,通过实例学习,我们可以掌握其基本操作,结合源码阅读,可以更深入地理解其实现原理。对于开发搜索引擎、内容管理系统或其他需要全文搜索功能的应用,Lucene 是一个值得...
这个“lucene小实例文件检索”旨在为初学者提供一个简单但完整的文件检索功能实现,帮助理解Lucene的基本工作原理和使用方法。 在Lucene中,文件检索主要涉及以下几个核心概念: 1. **索引(Index)**:在Lucene中...
Lucene是一个功能强大且灵活的开源搜索引擎库,它提供了一个简单易用的API,允许开发者快速构建搜索应用程序。下面将对Lucene的实例代码和结构流程进行详细的解析。 Lucene索引创建 Lucene索引创建是指将文档集合...
<artifactId>spring-boot-starter-data-lucene</artifactId> </dependency> ``` 三、创建索引仓库 在SpringBoot应用中,我们需要定义一个`Directory`实例来保存索引,可以选择内存或文件系统作为存储方式。例如,...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>8.10.1</version> <!-- 使用最新版本 --> </dependency> ``` 接下来,我们创建一个索引。在Lucene中,索引是通过对文档...