1

我有一个查询涉及许多表上的许多连接,并且查询时间过长。我被要求尝试使用 Lucene 来加快速度。我所做的是将查询导出到 XML,并使用 Java 解析 XML,使用 Lucene 索引 XML,并创建一个 API 以在 Java 中查询此索引。这将查询时间减少了 6-10 倍。

但是,除非专用 VM 或机器不断查询数据库、导出数据并重新索引数据,否则使用 API 搜索 Lucene 索引的任何最终用户都将收到非最新数据。即使一台机器专门用于此目的,数据也不会在每次尝试搜索 Lucene 索引时都是最新的。

我相信 Solr 的“增量导入”就是我所说的。我认为这是 Solr 独有的,而不是 Lucene。

Lucene 有哪些选项可以索引会以某种频率变化的数据,并允许用户实时搜索/查询?这对 Lucene 要求太多了吗?

4

1 回答 1

1

Solr 恰好是构建在 lucene 之上的搜索应用程序。所以提供的任何索引和搜索功能都来自于 lucene。

Lucene 支持近乎实时的搜索 - http://wiki.apache.org/lucene-java/NearRealtimeSearch

对于您的索引问题,我想说这取决于您的应用程序在数据库和 lucene 之间同步数据。Lucene 可以以非常高的吞吐量进行索引。http://people.apache.org/~mikemccand/lucenebench/indexing.html 所以你的应用程序应该足够聪明,可以计算出数据库中所做的更改并只重新索引那个“delta”

于 2013-09-27T10:01:11.883 回答