Lucene一个常见的用例是在一个或者多个数据库表进行全文检索。 虽然MySql有全文检索的功能,但是如果字段和数据量增加,MySql的性能会减低很快。
映射数据到Lucene
通常情况下最需要解决的问题是怎么把你数据库的数据描述到Lucene里面,最可能的解决方法法就是把你的数据表放到平面的Lucence Document对象里面。
用伪代码表示:
String sql = “select id, firstname, lastname, phone, email from person”;
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
Document doc = new Document();
doc.add(new Field(”id”, rs,getString(”firstname”), Field.Store.YES, Field.Index.UN_TOKENIZED));
doc.add(new Field(”firstname”, rs,getString(”firstname”), Field.Store.YES, Field.Index.TOKENIZED));
// … repeat for each column in result set
writer.addDocument(doc);
}
显示搜索结果
当显示搜索结果给用户时,你有两个选择:
1.因为你的Table已经扁平化到了Lucene里面,所以只需要用Document里面的Field.因为Lucene也非常快,这样会大大减低你的数据库的压力。
2.如果你要显示另外的数据到你的搜索结果页,你只需要在Hits里面收集他们的ID,然后从数据库去数据再根据结果组装搜索结果页。
要搜索的东西
以上列出的方式都是假设把整个结果集放到内存里面,这样在数据集大的话会很容易造成问题,你需要在你的SQL里面做一些分页或者offset
你还需要在你的结果集里面做一个try/catch,这样当添加一个Document出错的时候不会影响整个过程。
通常情况下可以把所有的field放到同一个”Contents” field然后只搜索这一个字段,但是需要保留这些field这样可以按field检索。
如果你需要检索多个table
通常最好能用不同的索引来搜索不同类型的数据,而不是把他们加到同一个index然后根据类型来区分。
原因:
可以更简单的维护操作。如果你只需要对这个表进行一个批处理的update,你只需要重建特定的索引而不是所有的索引。
分享到:
相关推荐
然而,Lucene可以与数据库结合使用,以实现高效的全文搜索和索引。在这个主题中,我们将深入探讨如何利用Lucene对数据库中的数据进行索引和查询。 首先,我们需要理解Lucene的工作原理。Lucene通过分析文本,将其...
在这个"lucene与数据库连接进行查询"的主题中,我们主要探讨如何将 Lucene 与 JDBC(Java Database Connectivity)结合,通过数据库连接来获取数据并利用 Lucene 进行处理。 首先,我们需要了解如何使用 JDBC 连接...
#### 二、Lucene在数据库索引中的应用 在数据库应用中,Lucene常被用来提高特定字段的搜索性能。通过为数据库表中的某些字段创建Lucene索引,可以显著提升基于这些字段的搜索速度和效率。 #### 三、数据库Authors表...
**LUCENE索引搜索数据库技术汇总** Lucene是一个高性能、全文检索库,它是Apache软件基金会的顶级项目,被广泛应用于各种搜索引擎的开发。在学习和应用Lucene的过程中,掌握其核心概念和技术至关重要。以下是对...
在本文中,我们将探讨如何使用Lucene建立数据库索引,并分享一些在实践过程中的经验和教训。Lucene是一个高性能、全文本搜索库,广泛用于构建搜索引擎。在创建索引时,需要注意以下关键点: 1. **资料的准确性**:...
2. 数据库索引创建 创建索引的关键在于将数据库中的数据转化为Lucene可理解的格式。首先,我们需要通过JDBC建立数据库连接,获取数据。例如,通过`getResult(String sql)`方法执行SQL查询,返回结果集。 接下来,...
**使用Lucene对数据库建立索引及搜索** Lucene是一个高性能、可伸缩的信息检索库,它是Apache软件基金会的顶级项目之一。它提供了一个简单但功能强大的API,用于在各种数据源上创建全文搜索引擎,包括数据库。在本...
数据库索引通常是为了加速查询操作,减少对整个表的扫描时间。然而,这种索引机制在处理大规模数据集时仍存在局限性。而Lucene的索引机制则更加灵活和高效,它基于项的静态存储,能够实现基于项的高效搜索,从而大幅...
- **文档(Document)**:是Lucene处理的基本单位,通常代表数据库中的一条记录或者一个网页。文档包含一系列字段(Field),每个字段都有一个名字和对应的值。 - **字段(Field)**:字段是文档的组成部分,如标题...
这就是"Lucene 索引 查看 工具"的用途,它可以帮助我们分析和理解 Lucene 索引的工作原理。 主要知识点: 1. **Lucene 索引**:Lucene 的索引是一种倒排索引,它将文档中的词项(tokens)映射到包含这些词项的文档...
3.定义一个IndexWriter,它是将索引写进Lucene自己的数据库中。 4.定义一个Document,Document相当于二维表中一行数据一样。 5.对IndexWriter进行优化,方法很简单,就是writer.optimize()。 三级、编写对索引库的...
在使用 Lucene 进行信息检索时,有时我们需要对建立的索引进行查看、调试或分析,这时就需要借助 Lucene 的索引查看工具。 Luke 是一个非常实用的 Lucene 索引浏览器,全称为 Lucidworks Luke。它允许用户以图形化...
《深入理解Lucene索引查看程序与代码》 在信息技术领域,搜索引擎的高效运作离不开底层索引技术的支持,而Lucene作为Apache软件基金会的一个开放源代码项目,正是一个强大的全文检索库,它提供了高效的文本搜索功能...
《使用Lucene.NET对数据库建立索引及搜索》 在信息技术领域,搜索引擎是不可或缺的一部分,尤其是在处理大量数据时。Lucene.NET是一个强大的全文搜索引擎库,它允许开发人员在应用程序中集成高级搜索功能。本文将...
- 建立索引(Indexing):创建倒排索引,每个词项指向包含它的文档列表及其位置信息。 在本项目中,代码会遍历指定的文件夹,读取每个文件的内容,然后进行上述的索引创建操作。由于涉及文件I/O,所以可能需要考虑...
《深入 Lucene 索引机制》这篇博文主要探讨了Lucene这个全文搜索引擎的核心索引原理,它在信息检索领域有着广泛的应用。Lucene是一个开源的Java库,它提供了高效、可扩展的文本搜索功能。以下是对Lucene索引机制的...
lukeall-0.9.jar为Lucene索引查看工具,方便大家查看索引