Apache Lucene-优化搜索



我正在使用使用SQL Server数据库的Java(使用Spring)开发Web应用程序。我使用Apache Lucene为我的Web应用程序实现搜索功能。使用Apache Lucene,在进行搜索之前,我会创建标题索引。我首先从数据库中获取所有标题的列表来做到这一点。然后,我循环浏览标题列表,然后将它们添加到索引中。每当用户搜索某些东西时,都会发生这种情况。

我想知道是否有一种更好,更有效的创建索引的方法?我知道我的方式非常低效,当标题列表非常长时,将需要很长时间才能完成。

任何建议都将不胜感激。

谢谢

在优化Lucene:SQL Server之前已经具有完整的搜索功能。如果涵盖了您的用例,请使用它。这是最简单的方法,因为SQL Server负责将搜索索引与数据库同步。

如果SQL Server全文搜索不符合您的用例,则您的应用程序必须创建自己的搜索索引并与数据库保持同步。为此,您应该:

  • 当您的应用程序启动时,创建/更新搜索索引
  • 当应用程序插入,更新或删除标题
  • 时,更新搜索索引

Lucene在存储搜索索引的地方很灵活。您可以将其存储在文件系统或数据库中(或编写自己的存储提供商)中。我建议将其存储在文件系统中,因为性能要比将其存储在数据库中时要好得多。

如果您没有太多的标题来索引,您也可以使用内存搜索索引,每次启动应用程序时都会重新创建该索引。

您应该:

  1. 在开始申请之前制作Lucene索引
  2. 更新索引在数据库中添加/删除/更新标题

这种方法的好处:

  1. 应用程序脱机时一个完整索引
  2. 增量索引,每次更改相关信息

最新更新