`
jay88489
  • 浏览: 70554 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

初识Apache lucene

阅读更多

In Lucene 2.3.2 of core API documention,you should be see following description:

 

   To use Lucene, an application should:
   1. Create Documents by adding Fields;
   2. Create an IndexWriter and add documents to it with addDocument();
   3. Call QueryParser.parse() to build a query from a string; and
   4. Create an IndexSearcher and pass the query to its search() method.

Analyzer analyzer = new StandardAnalyzer();

    // Store the index in memory:
    Directory directory = new RAMDirectory();
    // To store an index on disk, use this instead:
    //Directory directory = FSDirectory.getDirectory("/tmp/testindex");
    IndexWriter iwriter = new IndexWriter(directory, analyzer, true);
    iwriter.setMaxFieldLength(25000);
    Document doc = new Document();
    String text = "This is the text to be indexed.";
    doc.add(new Field("fieldname", text, Field.Store.YES,
        Field.Index.TOKENIZED));
    iwriter.addDocument(doc);
    iwriter.optimize();
    iwriter.close();
    
    // Now search the index:
    IndexSearcher isearcher = new IndexSearcher(directory);
    // Parse a simple query that searches for "text":
    QueryParser parser = new QueryParser("fieldname", analyzer);
    Query query = parser.parse("text");
    Hits hits = isearcher.search(query);
    assertEquals(1, hits.length());
    // Iterate through the results:
    for (int i = 0; i < hits.length(); i++) {
      Document hitDoc = hits.doc(i);
      assertEquals("This is the text to be indexed.", hitDoc.get("fieldname"));
    }
    isearcher.close();
    directory.close();
 

 

 

 

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类的实例来表示的。

 

一个实例,简单地建立索引,进行搜索

 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() + "个结果");  
     }
}  
 
分享到:
评论

相关推荐

    apache Lucene4.7最全最新的jar包

    Apache Lucene是一个高性能、全文本搜索库,由Java编写,被广泛用于开发搜索引擎和需要文本检索功能的应用程序。Apache Lucene 4.7是该库的一个版本,它提供了丰富的功能和改进,使得开发者能够轻松地在他们的应用中...

    Apache Lucene.Net 2.4.0 API Documentation.chm

    Apache Lucene.Net 2.4.0 API

    apache下的lucene教程

    ### Apache Lucene教程知识点概述 #### 一、Apache Lucene简介 - **Lucene定义**:Lucene是一款高性能、全功能的文本搜索引擎库,由Java编写而成,是Apache基金会下的一个开源项目。 - **发展历程**:自1999年由...

    Apache Lucene全文检索和IKAnalyzer分词工具类

    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-4.10.3源码

    Apache Lucene是一个开源的全文搜索引擎库,被广泛用于构建高效、可扩展的搜索功能。它在Java编程语言中实现,但提供了多种语言的接口,包括Python、PHP、C#等,使得开发人员能够轻松地在各种项目中集成高级搜索功能...

    apache lucene(JAVA检索引擎工具包) v8.8.2 最新版

    apache lucene中文版是一款非常好用的检索工具包,使用方便,功能强大,有需要的朋友不要错过了,而且是完全开放的,你可以自由进行使用,可以支持多种检索功能。兼容多个操作系统,下载后可以直接使用,没有任何...

    cpp-Rucene是ApacheLucene项目的一个Rust移植

    Rucene,作为Apache Lucene的Rust版本,为开发者提供了一种在Rust编程语言中实现高效全文搜索引擎的途径。Apache Lucene是一个广泛使用的开源Java库,专门用于构建高级文本检索功能,而Rucene则将这些功能带入了Rust...

    apache-lucene-snowball.jar

    jar包,亲测可用

    Lucene.Net

    Apache Lucene.Net is a C# full-text search engine. Apache Lucene.Net is not a complete application, but rather a code library and API that can easily be used to add search capabilities to applications...

    lucenenet:Apache Lucene.NET

    Apache Lucene.NET.NET的全文本搜索Apache Lucene.NET是.NET全文搜索引擎框架,是流行的Apache Lucene项目的C#端口。 Apache Lucene.NET并不是一个完整的应用程序,而是可以轻松用于向应用程序添加搜索功能的代码库...

    apache lucene solr 官网历史版本 免费下载地址

    http://archive.apache.org/dist/lucene/java/ 这个是lucene的历史版本 http://archive.apache.org/dist/lucene/solr/ 这个是solr的历史版本

    lucene org.apache

    org.apache.lucene.analysis.cjk.CJKAnalyzer .......

    Apache Lucene3.0 入门实例介绍

    Apache Lucene是一个高性能、全文本搜索库,由Java编写,被广泛应用于各种搜索引擎的开发中。这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解...

    java开源系统源码-apache-lucene-beginning:“ApacheLucene开始:Java/开源/全文搜索系统的构建”的代

    java源系统apache-lucene开头 “ Apache Lucene的开始:Java /开源/全文搜索系统的构建”的代码kata。 这是关口浩二(Koji Sekiguchi)的“ Apache Lucene简介:Java,开放源代码和全文本搜索系统的构建”(2006年...

    apache-lucene-analyzers.jar

    Apache Lucene是一个高性能、全文本搜索库,广泛用于构建搜索引擎应用程序。这个名为"apache-lucene-analyzers.jar"的文件是Lucene项目的一部分,主要包含了各种分析器(analyzers)的实现,它们在处理文本数据时起...

    apache lucene 4.10.0入门单元测试代码demo

    总结了一些实用的demo 包括: 1.建立索引 2.通过IKAnalyzer搜索中文关键词 3.复杂的多字段搜索 4.多线程并发搜索,通过contiperf测试,详见:...lucene支持多线程并发搜索和建索引,只要IndexWriter是单例模式即可

    lucene-core-7.7.0-API文档-中文版.zip

    Maven坐标:org.apache.lucene:lucene-core:7.7.0; 标签:apache、lucene、core、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档...

    Elasticsearch是一个基于Apache Lucene构建的开源分布式搜索和分析引擎,专为云计算环境设计,能够迅速且有效

    elasticsearchElasticsearch是一个基于Apache Lucene构建的开源分布式搜索和分析引擎,专为云计算环境设计,能够迅速且有效地处理大规模数据集。以下是Elasticsearch的详细介绍: 一、基本特性 分布式架构:Elastic...

    lucene:Apache Lucene开源搜索软件

    阿帕奇·卢森(Apache Lucene) Apache Lucene是用Java编写的高性能,功能齐全的文本搜索引擎库。 在线文件 此自述文件仅包含基本的安装说明。 有关更全面的文档,请访问: Lucene: : 用Gradle构建 基本步骤: ...

Global site tag (gtag.js) - Google Analytics