Lucene的索引是什么以及它是如何工作的?
我在net和google上看过一些文章,但是我无法完全理解索引,文档等的概念。
如果有人能够用简单的术语解释术语索引和索引,请提供帮助。
谢谢!
答案 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()
上面的文件将被标记为“我的”,“测试”,“文档”,“测试文档”