簡體   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