Lucene 8.5.2核心API

网友投稿 671 2022-05-29

Lucene 8.5.2核心API

Apache Lucene是一个高性能的全功能文本搜索引擎库。

另请:说明

顶级程序包。

文字分析。

快速,通用的基于语法的令牌生成器根据Unicode标准附件#29中StandardTokenizer 指定的Unicode文本分段算法实现分词规则 。

文本分析的通用属性。

编解码器API:用于自定义索引编码和结构的API。

BlockTree术语词典。

StoredFieldsFormat,它允许对存储的字段进行跨文档和跨字段的压缩。

Lucene 5.0索引格式的组件有关索引格式org.apache.lucene.codecs.lucene80的概述,请参见。

Lucene 6.0索引格式的组件。

Lucene 7.0索引格式的组件。

Lucene 8.0索引格式的组件有关索引格式org.apache.lucene.codecs.lucene84的概述,请参见。

Lucene 8.4文件格式。

可以将每个字段委派为不同格式的帖子格式。

Document用于索引和搜索的逻辑表示。

Lucene Core的地理空间实用程序实现

维护和访问索引的代码。

代码以搜索索引。

该软件包包含可在Lucene中使用的各种排名模型。

跨度的演算。

二进制I / O API,用于所有索引数据。

一些实用程序类。

用于正则表达式的有限状态自动机。

块KD树,实现在所描述的通用的空间数据结构 本文。

压缩实用程序。

有限状态传感器

用于将令牌流作为图形使用的实用程序类。

可比对象包装

压缩整数数组和流。

Apache Lucene是一个高性能的全功能文本搜索引擎库。这是一个简单的示例,说明如何使用Lucene进行索引和搜索(使用JUnit检查结果是否符合我们的预期):

Analyzer analyzer = new StandardAnalyzer();

Path indexPath = Files.createTempDirectory("tempIndex");

Directory directory = FSDirectory.open(indexPath)

IndexWriterConfig config = new IndexWriterConfig(analyzer);

IndexWriter iwriter = new IndexWriter(directory, config);

Document doc = new Document();

String text = "This is the text to be indexed.";

doc.add(new Field("fieldname", text, TextField.TYPE_STORED));

iwriter.addDocument(doc);

iwriter.close();

// Now search the index:

DirectoryReader ireader = DirectoryReader.open(directory);

IndexSearcher isearcher = new IndexSearcher(ireader);

// Parse a simple query that searches for "text":

QueryParser parser = new QueryParser("fieldname", analyzer);

Query query = parser.parse("text");

ScoreDoc[] hits = isearcher.search(query, 10).scoreDocs;

assertEquals(1, hits.length);

// Iterate through the results:

for (int i = 0; i < hits.length; i++) {

Document hitDoc = isearcher.doc(hits[i].doc);

assertEquals("This is the text to be indexed.", hitDoc.get("fieldname"));

}

ireader.close();

directory.close();

IOUtils.rm(indexPath);

Lucene API分为几个软件包:

org.apache.lucene.analysis 定义一个抽象Analyzer API,用于将文本从Reader 转换为TokenStream,枚举为Attributes 的枚举。可以通过将TokenFilters应用于的输出来组成TokenStream Tokenizer。Tokenizer和TokenFilters串在一起并与一起应用Analyzer。  analyticss -common提供了许多Analyzer实现,包括 StopAnalyzer 和基于语法的StandardAnalyzer。

org.apache.lucene.codecs 提供了对倒排索引结构的编码和解码的抽象,以及可以根据应用程序需求选择的不同实现。

org.apache.lucene.document 提供一个简单的Document 类。文档只是一组名为Field的,其值可以是字符串或的实例Reader。

org.apache.lucene.index 提供了两个主要的类:IndexWriter,用于创建文档并将其添加到索引;和IndexReader,用于访问索引中的数据。

org.apache.lucene.search 提供表示查询的数据结构(即TermQuery 用于单个单词,PhraseQuery 短语和BooleanQuery 查询的布尔组合)IndexSearcher ,并将查询转换成TopDocs。提供了许多QueryParser,用于从字符串或xml生成查询结构。

org.apache.lucene.store 定义用于存储持久性数据的抽象类,该类Directory是由编写并由IndexOutput 读取的命名文件的集合IndexInput。提供了多种实现,但是FSDirectory通常建议您这样做,因为它会尝试有效地使用操作系统磁盘缓冲区高速缓存。

org.apache.lucene.util 包含一些方便的数据结构和util类,即FixedBitSet 和PriorityQueue。

Document通过添加来 创建Field;

使用创建一个IndexWriter 并向其中添加文档addDocument();

调用QueryParser.parse() 从字符串中构建查询;和

创建一个IndexSearcher 并将查询传递给其search() 方法。

Lucene 8.5.2核心API

IndexFiles.java为目录中包含的所有文件创建索引。

SearchFiles.java提示查询并搜索索引。

> java -cp lucene-core.jar:lucene-demo.jar:lucene-queryparser.jar:lucene-analyzers-common.jar org.apache.lucene.demo.SearchFiles

Query: chowder

Searching for: chowder

34 total matching documents

1. rec.food.recipes/soups/spam-chowder

[ ... thirty-four documents contain the word "chowder" ... ]

Query: "clam chowder" AND Manhattan

Searching for: +"clam chowder" +manhattan

2 total matching documents

1. rec.food.recipes/soups/clam-chowder

[ ... two documents contain the phrase "clam chowder" and the word "manhattan" ... ]

[ Note: "+" and "-" are canonical, but "AND", "OR" and "NOT" may be used. ]

API Lucene/Solr

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Oracle太贵?华为云DRS九个法宝助您轻松去O
下一篇:《Java多线程编程核心技术(第2版)》 —1 Java多线程技能
相关文章