Lucene的索引是什么?

时间:2011-05-02 14:36:09

标签: lucene indexing

Lucene的索引是什么以及它是如何工作的?

我在net和google上看过一些文章,但是我无法完全理解索引,文档等的概念。

如果有人能够用简单的术语解释术语索引和索引,请提供帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

假设您有一堆您想要搜索的信息。例如,一些HTML文件,一些PDF以及存储在数据库中的一些信息。当用户进行搜索时,您可以编写一个搜索引擎来搜索此信息并返回匹配的结果。但是,对于大型数据集来说,这通常太慢了。

因此,在运行我们的应用程序之前,我们会创建需要搜索的信息的索引。索引包含我们希望包含在搜索中的每条信息的摘要。在Lucene中,信息片段的摘要称为文档。文档包含许多字段

创建索引时,您可以根据要搜索的内容决定要包含哪些字段。例如,您可以包含标题,ID,类别字符串等。定义字段后,在索引中为每个信息项(html,pdf,数据库条目等)创建文档。此过程称为索引

搜索引擎现在可以使用索引来搜索内容。该索引针对我们进行的典型搜索进行了高度优化。您可以搜索特定字段中的信息并执行布尔逻辑。您可以搜索精确匹配或模糊匹配。搜索引擎会对索引中的文档进行称重/评分,并首先返回最相关的文档。

希望有助于高水平。

答案 1 :(得分:0)

Lucene创建一个倒置的全文索引,它将文档拆分为单词,为每个单词构建索引。

For Instance:
Document 1: "Apache Lucene Java"
Document 2: "Java Library"

Inverted Index:
Tokens       Document Location
apache      1
Library     2
Java        1, 2
Lucene      1

让我们进一步展开,现在让我们考虑使用两个字段文档正文标题

Document doc = new Document()
doc.add(new Field("body", "This is my Test document", Field.Store.YES, Field.Index.TOKENIZED)
doc.add(new Field("title", "Test document", Field.Store.YES, Field.Index.UNTOKENIZED)

您可以灵活地标记或不标记字段。

Luncene有各种分析仪,使用StandardAnalyzer

Analyzer analyzer = new StandardAnalyzer()

上面的文件将被标记为“我的”,“测试”,“文档”,“测试文档”