`
kobe学java
  • 浏览: 258379 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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测试例子 
Java代码   收藏代码
  1. package lighter.iteye.com;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.StringReader;  
  5.   
  6. import org.apache.lucene.analysis.Analyzer;  
  7. import org.apache.lucene.analysis.Token;  
  8. import org.apache.lucene.analysis.TokenStream;  
  9. import org.apache.lucene.analysis.standard.StandardAnalyzer;  
  10.   
  11. public class StandardAnalyzerTest   
  12. {  
  13.     //构造函数,  
  14.     public StandardAnalyzerTest()  
  15.     {  
  16.     }  
  17.     public static void main(String[] args)   
  18.     {  
  19.         //生成一个StandardAnalyzer对象  
  20.         Analyzer aAnalyzer = new StandardAnalyzer();  
  21.         //测试字符串  
  22.         StringReader sr = new StringReader("lighter javaeye com is the are on");  
  23.         //生成TokenStream对象  
  24.         TokenStream ts = aAnalyzer.tokenStream("name", sr);   
  25.         try {  
  26.             int i=0;  
  27.             Token t = ts.next();  
  28.             while(t!=null)  
  29.             {  
  30.                 //辅助输出时显示行号  
  31.                 i++;  
  32.                 //输出处理后的字符  
  33.                 System.out.println("第"+i+"行:"+t.termText());  
  34.                 //取得下一个字符  
  35.                 t=ts.next();  
  36.             }  
  37.         } catch (IOException e) {  
  38.             e.printStackTrace();  
  39.         }  
  40.     }  
  41. }  
显示结果: 

引用 
第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、看另一个实例,简单地建立索引,进行搜索 
Java代码   收藏代码
  1. package lighter.iteye.com;  
  2. import org.apache.lucene.analysis.standard.StandardAnalyzer;  
  3. import org.apache.lucene.document.Document;  
  4. import org.apache.lucene.document.Field;  
  5. import org.apache.lucene.index.IndexWriter;  
  6. import org.apache.lucene.queryParser.QueryParser;  
  7. import org.apache.lucene.search.Hits;  
  8. import org.apache.lucene.search.IndexSearcher;  
  9. import org.apache.lucene.search.Query;  
  10. import org.apache.lucene.store.FSDirectory;  
  11.   
  12. public class FSDirectoryTest {  
  13.   
  14.     //建立索引的路径  
  15.     public static final String path = "c:\\index2";  
  16.   
  17.     public static void main(String[] args) throws Exception {  
  18.         Document doc1 = new Document();  
  19.         doc1.add( new Field("name""lighter javaeye com",Field.Store.YES,Field.Index.TOKENIZED));  
  20.   
  21.         Document doc2 = new Document();  
  22.         doc2.add(new Field("name""lighter blog",Field.Store.YES,Field.Index.TOKENIZED));  
  23.   
  24.         IndexWriter writer = new IndexWriter(FSDirectory.getDirectory(path, true), new StandardAnalyzer(), true);  
  25.         writer.setMaxFieldLength(3);  
  26.         writer.addDocument(doc1);  
  27.         writer.setMaxFieldLength(3);  
  28.         writer.addDocument(doc2);  
  29.         writer.close();  
  30.   
  31.         IndexSearcher searcher = new IndexSearcher(path);  
  32.         Hits hits = null;  
  33.         Query query = null;  
  34.         QueryParser qp = new QueryParser("name",new StandardAnalyzer());  
  35.           
  36.         query = qp.parse("lighter");  
  37.         hits = searcher.search(query);  
  38.         System.out.println("查找\"lighter\" 共" + hits.length() + "个结果");  
  39.   
  40.         query = qp.parse("javaeye");  
  41.         hits = searcher.search(query);  
  42.         System.out.println("查找\"javaeye\" 共" + hits.length() + "个结果");  
  43.   
  44.     }  
  45.   
  46. }  

运行结果: 

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