数据结构的定义是什么(数据结构指的是什么)
704
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() 方法。
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小时内删除侵权内容。