繁体   English   中英

Apache Lucene-优化搜索

[英]Apache Lucene - Optimizing Searching

我正在开发Java(使用Spring)中的Web应用程序,该应用程序使用SQL Server数据库。 我使用Apache Lucene为我的Web应用程序实现搜索功能。 使用Apache Lucene,在执行搜索之前,我会创建标题索引。 我首先从数据库中获取所有标题的列表。 然后,我遍历标题列表,并将每个标题添加到索引中。 每当用户搜索某些内容时,就会发生这种情况。

我想知道是否有更好,更有效的创建索引的方法? 我知道我的方式效率很低,并且在标题列表很长时需要很长时间才能完成。

任何建议将不胜感激。

谢谢

你应该:

  1. 在开始应用程序之前使Lucene索引
  2. 在数据库中添加/删除/更新标题时更新索引

这种方法的好处:

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM