`
sacredlove
  • 浏览: 12178 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

lucene应用

 
阅读更多
Lucene :其实很简单的,它最主要就是做两件事:建立索引和进行搜索
来看一些在lucene中使用的术语,这里并不打算作详细的介绍,只是点一下而已----因为这一个世界有一种好东西,叫搜索。

IndexWriter:lucene中最重要的的类之一,它主要是用来将文档加入索引,同时控制索引过程中的一些参数使用。

Analyzer:分析器,主要用于分析搜索引擎遇到的各种文本。常用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分析器等。

Directory:索引存放的位置;lucene提供了两种索引存放的位置,一种是磁盘,一种是内存。一般情况将索引放在磁盘上;相应地lucene提供了FSDirectory和RAMDirectory两个类。

Document:文档;Document相当于一个要进行索引的单元,任何可以想要被索引的文件都必须转化为Document对象才能进行索引。

Field:字段。

IndexSearcher:是lucene中最基本的检索工具,所有的检索都会用到IndexSearcher工具;

Query:查询,lucene中支持模糊查询,语义查询,短语查询,组合查询等等,如有TermQuery,BooleanQuery,RangeQuery,WildcardQuery等一些类。

QueryParser: 是一个解析用户输入的工具,可以通过扫描用户输入的字符串,生成Query对象。

Hits:在搜索完成之后,需要把搜索结果返回并显示给用户,只有这样才算是完成搜索的目的。在lucene中,搜索的结果的集合是用Hits类的实例来表示的。

上面作了一大堆名词解释,下面就看几个简单的实例吧:
1、简单的的StandardAnalyzer测试例子
package lighter.iteye.com;

import java.io.IOException;
import java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;

public class StandardAnalyzerTest 
{
	//构造函数,
	public StandardAnalyzerTest()
	{
	}
	public static void main(String[] args) 
	{
		//生成一个StandardAnalyzer对象
		Analyzer aAnalyzer = new StandardAnalyzer();
		//测试字符串
		StringReader sr = new StringReader("lighter javaeye com is the are on");
		//生成TokenStream对象
		TokenStream ts = aAnalyzer.tokenStream("name", sr);	
		try {
			int i=0;
			Token t = ts.next();
			while(t!=null)
			{
				//辅助输出时显示行号
				i++;
				//输出处理后的字符
				System.out.println("第"+i+"行:"+t.termText());
				//取得下一个字符
				t=ts.next();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
显示结果:

引用
第1行:lighter
第2行:javaeye
第3行:com

提示一下:
StandardAnalyzer是lucene中内置的"标准分析器",可以做如下功能:
1、对原有句子按照空格进行了分词
2、所有的大写字母都可以能转换为小写的字母
3、可以去掉一些没有用处的单词,例如"is","the","are"等单词,也删除了所有的标点
查看一下结果与"new StringReader("lighter javaeye com is the are on")"作一个比较就清楚明了。
这里不对其API进行解释了,具体见lucene的官方文档。需要注意一点,这里的代码使用的是lucene2的API,与1.43版有一些明显的差别。

2、看另一个实例,简单地建立索引,进行搜索
package lighter.iteye.com;
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.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.store.FSDirectory;

public class FSDirectoryTest {

	//建立索引的路径
	public static final String path = "c:\\index2";

	public static void main(String[] args) throws Exception {
		Document doc1 = new Document();
		doc1.add( new Field("name", "lighter javaeye com",Field.Store.YES,Field.Index.TOKENIZED));

		Document doc2 = new Document();
		doc2.add(new Field("name", "lighter blog",Field.Store.YES,Field.Index.TOKENIZED));

		IndexWriter writer = new IndexWriter(FSDirectory.getDirectory(path, true), new StandardAnalyzer(), true);
		writer.setMaxFieldLength(3);
		writer.addDocument(doc1);
		writer.setMaxFieldLength(3);
		writer.addDocument(doc2);
		writer.close();

		IndexSearcher searcher = new IndexSearcher(path);
		Hits hits = null;
		Query query = null;
		QueryParser qp = new QueryParser("name",new StandardAnalyzer());
		
		query = qp.parse("lighter");
		hits = searcher.search(query);
		System.out.println("查找\"lighter\" 共" + hits.length() + "个结果");

		query = qp.parse("javaeye");
		hits = searcher.search(query);
		System.out.println("查找\"javaeye\" 共" + hits.length() + "个结果");

	}

}

运行结果:

Java代码 
1.查找"lighter" 共2个结果  
2.查找"javaeye" 共1个结果
分享到:

相关推荐

    lucene应用开发揭秘 第四讲

    ### Lucene应用开发揭秘第四讲知识点详解 #### 一、概览 《Lucene应用开发揭秘第四讲》是由觉先华老师主讲的一次技术分享,主要围绕如何设计高效的索引格式来进行讲解。本讲中重点介绍了词典的存储方式以及倒排表...

    Lucene应用中Pdf文档文本数据提取方法研究

    在探讨“Lucene应用中Pdf文档文本数据提取方法研究”的主题下,我们深入研究了如何在基于Lucene的全文检索系统中高效处理和提取Pdf文档中的文本数据。Lucene作为一款开源的全文检索引擎,虽然提供了强大的全文检索...

    lucene的应用程序扩展

    **Lucene 应用程序扩展在 ASP.NET 中的实践与应用** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了强大的搜索功能,被广泛应用于各种应用程序,包括网站、数据库和文档管理。在 ASP.NET ...

    Lucene在web项目中的应用

    **Lucene在Web项目中的应用** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,它提供了完整的搜索解决方案,包括索引构建、搜索功能以及分词处理。在Java Web项目中,Lucene能够帮助开发者实现高效、...

    经典的lucene实例代码及详细解析以及lucene结构流程介绍

    Lucene应用程序可以用于各种领域,包括文本搜索、图片搜索和视频搜索等。 在上面的代码中,我们使用了Lucene搜索引擎库构建了一个文本搜索应用程序。该应用程序可以搜索TXT文件中的指定内容,并返回搜索结果。 ...

    Lucene in Action 中文版

     《Lucene实战 第2版 》基于Apache的Lucene 3 0 从Lucene核心 Lucene应用 案例分析3个方面详细系统地介绍了Lucene 包括认识Lucene 建立索引 为应用程序添加搜索功能 高级搜索技术 扩展搜索 使用Tika提取文本 Lucene...

    Lucene实战

    《Lucene实战(第2版)》基于Apache的Lucene 3.0,从Lucene核心、Lucene应用、案例分析3个方面详细系统地介绍了Lucene,包括认识Lucene、建立索引、为应用程序添加搜索功能、高级搜索技术、扩展搜索、使用Tika提取文本...

    Lucene in action(中文版)

    《Lucene实战(第2版)》基于Apache的Lucene 3.0,从Lucene核心、Lucene应用、案例分析3个方面详细系统地介绍了Lucene,包括认识Lucene、建立索引、为应用程序添加搜索功能、高级搜索技术、扩展搜索、使用Tika提取文本...

    weblucene安装文档

    启动Tomcat,WebLucene应用会自动解压并部署。 4. **数据库连接配置** WebLucene需要一个数据库来存储索引和其他元数据。你需要在`src/main/resources/config.properties`中配置数据库连接信息,包括数据库类型...

    Lucene的的学习资料及案例

    在提供的案例中,你可以找到一个简单的Lucene应用实例。这个案例可能包含了以下部分: 1. **索引创建**: 包含读取数据源(如文件或数据库),创建Analyzer,将数据转换为Lucene的Document对象,并通过IndexWriter...

    Lucene原理及使用总结

    一个简单的Lucene应用实例是搜索文本文档。例如,开发者可以创建一个索引目录,然后指定一个包含文本文档的数据目录。使用`Analyzer`(如CJKAnalyzer)对文本进行分析,通过`IndexWriter`将文档内容写入索引。这样,...

    Lucene In Action 第二版 高清中文版+附书源代码

    1. **Lucene基础知识**:介绍Lucene的基本概念,如文档、字段、术语、倒排索引和查询解析,以及如何创建一个基本的Lucene应用。 2. **索引构建**:涵盖如何将结构化和非结构化数据转化为可搜索的索引,包括分词器的...

    Lucene4.7-Web 例子

    《Lucene4.7在Web应用中的实践:结合SpringMVC与MyBatis3》 在信息化时代,搜索引擎已经成为我们日常获取信息的重要工具。Apache Lucene作为一款强大的全文搜索引擎库,为开发者提供了丰富的功能,帮助构建高效、可...

    lucene5 源码教程

    在实践中,会遇到如数据导入、更新、删除等问题,解决这些问题有助于提升开发者的Lucene应用能力。 总结,Lucene 5为开发者提供了强大且灵活的全文检索功能,通过深入学习其源码,尤其是拼音检索和分词器的运用,...

    LuceneInAction(第2版)_cn.pdf

     《Lucene实战(第2版)》基于Apache的Lucene 3.0,从Lucene核心、Lucene应用、案例分析3个方面详细系统地介绍了Lucene,包括认识Lucene、建立索引、为应用程序添加搜索功能、高级搜索技术、扩展搜索、使用Tika提取...

    Lucene实战中文版第2版.pdf

    lcene实战(第2版)》基于apache的lucene3.0,从lucene核心、lucene应用、案例分析3个方面详细系统地介绍了lucene,包括认识lucene、建立索引、为应用程序添加搜索功能、高级搜索技术、扩展搜索、使用tika提取文本、...

    luceneDemo

    在 "luceneDemo" 中,可能包含了一个简单的 Lucene 应用示例,比如: - `search.jsp`: 这是一个 JSP 文件,通常用于接收用户输入的查询字符串,然后调用后端服务进行搜索。 - `WEB-INF`: 这个目录在 Java Web 应用...

    Weblucene 站内搜索

    要将Weblucene应用于你的网站,你需要遵循以下步骤: - **安装与配置**:下载Weblucene的源代码或二进制包,根据官方文档配置相关参数,如索引目录、日志设置等。 - **创建索引**:使用Weblucene提供的工具,抓取并...

    lucene部分案例的源代码

    此文件可能是完整的Lucene应用案例,涵盖了更复杂的搜索功能,如: - 多字段搜索:支持对多个字段进行同时搜索,比如搜索标题和内容。 - 布尔查询:允许用户使用AND、OR、NOT等逻辑运算符组合多个查询条件。 - 断词...

    lucene示例 demo+jar包

    **Lucene 全文检索引擎概述** Lucene 是一个开源的..."lucene示例"可以帮助初学者理解并实践 Lucene 的主要功能,而提供的 jar 包则是运行 Lucene 应用的基础。学习并掌握 Lucene,将有助于提升应用程序的搜索体验。

Global site tag (gtag.js) - Google Analytics