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 Lucene是一个高性能、全文本搜索库,由Java编写,被广泛用于开发搜索引擎和需要文本检索功能的应用程序。Apache Lucene 4.7是该库的一个版本,它提供了丰富的功能和改进,使得开发者能够轻松地在他们的应用中...
Apache Lucene.Net 2.4.0 API
### Apache Lucene教程知识点概述 #### 一、Apache Lucene简介 - **Lucene定义**:Lucene是一款高性能、全功能的文本搜索引擎库,由Java编写而成,是Apache基金会下的一个开源项目。 - **发展历程**:自1999年由...
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是一个开源的全文搜索引擎库,被广泛用于构建高效、可扩展的搜索功能。它在Java编程语言中实现,但提供了多种语言的接口,包括Python、PHP、C#等,使得开发人员能够轻松地在各种项目中集成高级搜索功能...
apache lucene中文版是一款非常好用的检索工具包,使用方便,功能强大,有需要的朋友不要错过了,而且是完全开放的,你可以自由进行使用,可以支持多种检索功能。兼容多个操作系统,下载后可以直接使用,没有任何...
Rucene,作为Apache Lucene的Rust版本,为开发者提供了一种在Rust编程语言中实现高效全文搜索引擎的途径。Apache Lucene是一个广泛使用的开源Java库,专门用于构建高级文本检索功能,而Rucene则将这些功能带入了Rust...
jar包,亲测可用
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...
Apache Lucene.NET.NET的全文本搜索Apache Lucene.NET是.NET全文搜索引擎框架,是流行的Apache Lucene项目的C#端口。 Apache Lucene.NET并不是一个完整的应用程序,而是可以轻松用于向应用程序添加搜索功能的代码库...
http://archive.apache.org/dist/lucene/java/ 这个是lucene的历史版本 http://archive.apache.org/dist/lucene/solr/ 这个是solr的历史版本
org.apache.lucene.analysis.cjk.CJKAnalyzer .......
Apache Lucene是一个高性能、全文本搜索库,由Java编写,被广泛应用于各种搜索引擎的开发中。这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解...
java源系统apache-lucene开头 “ Apache Lucene的开始:Java /开源/全文搜索系统的构建”的代码kata。 这是关口浩二(Koji Sekiguchi)的“ Apache Lucene简介:Java,开放源代码和全文本搜索系统的构建”(2006年...
Apache Lucene是一个高性能、全文本搜索库,广泛用于构建搜索引擎应用程序。这个名为"apache-lucene-analyzers.jar"的文件是Lucene项目的一部分,主要包含了各种分析器(analyzers)的实现,它们在处理文本数据时起...
总结了一些实用的demo 包括: 1.建立索引 2.通过IKAnalyzer搜索中文关键词 3.复杂的多字段搜索 4.多线程并发搜索,通过contiperf测试,详见:...lucene支持多线程并发搜索和建索引,只要IndexWriter是单例模式即可
Maven坐标:org.apache.lucene:lucene-core:7.7.0; 标签:apache、lucene、core、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档...
elasticsearchElasticsearch是一个基于Apache Lucene构建的开源分布式搜索和分析引擎,专为云计算环境设计,能够迅速且有效地处理大规模数据集。以下是Elasticsearch的详细介绍: 一、基本特性 分布式架构:Elastic...
阿帕奇·卢森(Apache Lucene) Apache Lucene是用Java编写的高性能,功能齐全的文本搜索引擎库。 在线文件 此自述文件仅包含基本的安装说明。 有关更全面的文档,请访问: Lucene: : 用Gradle构建 基本步骤: ...